注释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也适用,默认情况下是选中的。