gpt4 book ai didi

annotations - 在 Kotlin 中注释属性时,注释的默认目标是什么?

转载 作者:行者123 更新时间:2023-12-02 08:22:44 24 4
gpt4 key购买 nike

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 是默认使用站点,但它似乎不是。

最佳答案

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: 目标也适用并且默认选择。

关于annotations - 在 Kotlin 中注释属性时,注释的默认目标是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35361162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com