scala - 在 Scala 中注释构造函数参数

标签 scala annotations

编译为字节码时,注释构造函数参数似乎没有任何作用。我也没有收到编译器警告。

以下作品。 getAnnotationsname字段返回 javax.annotation.Nullable .

class Person {
    @Nullable var name: String = _;
}

以下没有,也没有 valvar .
class Person(@Nullable var name: String)

这可能不是故意的,所以我遗漏了什么还是应该提交错误报告?

最佳答案

当您在构造函数参数上指定注释时,您需要指定应该注释的内容。

为此,请使用来自 scala.annotation.target 的一个或多个注释来注释您的注释。 ,例如getter , setter或如您的情况 field :

import annotation.target.field

class Person(@(Nullable @field) var name: String)

您还可以为此使用类型别名:
type NullableField = Nullable @field

class Person(@NullableField var name: String)

更新 Scala 2.12

现在这个特定的注释和其他注释在包 中scala.annotation.meta 而不是 scala.annotation.target
import scala.annotation.meta.{field, param}

关于scala - 在 Scala 中注释构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3769624/

相关文章:

scala - 在搜索隐式转换时,Scala 是否使用目标类型?

scala - 使用 Scala 项目设置 log4j2

java - 使用 TestNG 注释进行测试

hibernate - Spring MVC、Hibernate 3 和@Valid 问题

java - 谁能解释一下类级 Controller 和方法级 Controller 之间的区别..?

Java 测试自动化 - 测试用例注释到范围报告

scala - 如何使用 DataFrames 来利用 Cassandra 分区器?

sql - Spark SQL : Cache Memory footprint improves with 'order by'

scala - Intellij中如何运行指定的子模块播放应用

java - 无法执行,没有命名参数匹配