编译为字节码时,注释构造函数参数似乎没有任何作用。我也没有收到编译器警告。
以下作品。 getAnnotations
为 name
字段返回 javax.annotation.Nullable
.
class Person {
@Nullable var name: String = _;
}
以下没有,也没有
val
或 var
.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/