在Scala中注释构造函数参数

时间:2010-09-22 13:19:56

标签: scala annotations

在编译为字节码时,注释构造函数参数似乎无效。我也没有编译警告。

以下作品。 getAnnotations字段的name会返回javax.annotation.Nullable

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

以下情况不适用于valvar

class Person(@Nullable var name: String)

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

1 个答案:

答案 0 :(得分:35)

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

为此,请使用scala.annotation.target中的一个或多个注释来注释您的注释,例如gettersetter或您的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}