注释Kotlin中的属性时,注释的默认目标是什么?
Kotlin中的注释可以具有不同的使用地点目标,如下所述: https : //kotlinlang.org/docs/reference/annotations.html#annotation-use-site-targets
我的问题是:当use-site没有明确定义的时候,像下面这个例子那样在注释一个类的属性的时候默认的目标是什么?
class Test { @SomeAnnotation var someProperty: String? = null }
背景
我正在尝试Jongo作为Kotlin中的MongoDB客户端,并注意到id字段的问题。 Jongo没有正确映射id属性,如下所示:
@MongoId @MongoObjectId var id: String? = null
这些注释只是Jackson的元注释。 但是,当我注释这样的属性,它似乎工作,指示使用现场问题:
@field:[MongoId MongoObjectId] var id: String? = null
我期望@field
是默认的使用网站,但它似乎不是。
参考文献说:
如果您未指定使用地点目标,则根据所使用的注释的
@Target
批注选择目标。 如果有多个适用的目标,则使用以下列表中的第一个适用目标:
param
(构造函数参数)property
(对此目标的注释对Java不可见)field
因此,如果您的注释具有@Target({ElementType.FIELD})
,则Kotlin中的注释将以@field:
目标。
如果没有指定@Target
,则可以在任何程序元素上使用: @property:
target也适用,默认情况下是选中的。