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
有问题的注释只是杰克逊的元注释。但是,当我像这样注释属性时,它似乎有效,表明使用现场问题:
@field:[MongoId MongoObjectId]
var id: String? = null
我希望@field
是默认的使用网站,但似乎不是。
答案 0 :(得分:6)
如果未指定使用地点目标,则根据目标选择目标 到正在使用的注释的
@Target
注释。如果有 多个适用的目标,第一个适用的目标来自 使用以下列表:
param
(构造函数参数)property
(具有此目标的注释对Java不可见)field
因此,如果您的注释具有@Target({ElementType.FIELD})
,则Kotlin中的注释将定位@field:
。
如果没有指定@Target
,则可以在任何程序元素上使用它:@property:
目标也适用,默认选择。