在 Kotlin 中注释 属性 时,注释的默认目标是什么?
What is the default target for an annotation when annotating property in Kotlin?
Kotlin 中的注释可以有不同的使用位置目标,如下所述:https://kotlinlang.org/docs/reference/annotations.html#annotation-use-site-targets
我的问题是:当未明确定义 use-site 时,在下面的示例中在 class 中注释 属性 时的默认目标是什么?
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
是默认使用站点,但似乎不是。
reference 说:
If you don’t specify a use-site target, the target is chosen according
to the @Target
annotation of the annotation being used. If there are
multiple applicable targets, the first applicable target from the
following list is used:
param
(constructor parameter)
property
(annotations with this target are not visible to Java)
field
因此,如果您的注释具有 @Target({ElementType.FIELD})
,则 Kotlin 中的注释将以 @field:
为目标。
如果没有指定 @Target
,它可以用在任何程序元素上:@property:
目标也适用并且默认选择。
Kotlin 中的注释可以有不同的使用位置目标,如下所述:https://kotlinlang.org/docs/reference/annotations.html#annotation-use-site-targets
我的问题是:当未明确定义 use-site 时,在下面的示例中在 class 中注释 属性 时的默认目标是什么?
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
是默认使用站点,但似乎不是。
reference 说:
If you don’t specify a use-site target, the target is chosen according to the
@Target
annotation of the annotation being used. If there are multiple applicable targets, the first applicable target from the following list is used:
param
(constructor parameter)property
(annotations with this target are not visible to Java)field
因此,如果您的注释具有 @Target({ElementType.FIELD})
,则 Kotlin 中的注释将以 @field:
为目标。
如果没有指定 @Target
,它可以用在任何程序元素上:@property:
目标也适用并且默认选择。