当前位置: 首页 > 知识库问答 >
问题:

在静态编程语言中注释属性时,注释的默认目标是什么?

轩辕乐邦
2023-03-14

Kotlin中的注释可以有不同的使用站点目标,如下所述:https://kotlinlang.org/docs/reference/annotations.html#annotation-使用站点目标

我的问题是:如果没有明确定义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是默认的使用站点,但它似乎不是。

共有1个答案

刘焱
2023-03-14

参考文献说:

如果未指定使用站点目标,则会根据所用注释的@target注释选择目标。如果有多个适用目标,则使用以下列表中的第一个适用目标:

  • 参数(构造函数参数)
  • 属性(具有此目标的注释对 Java 不可见)

因此,如果您的注释具有@Target({ElementType.FIELD}),则静态编程语言中的注释将针对@field:

如果未指定@Target,则可以在任何程序元素上使用:@property:Target也适用,默认情况下是选中的。

 类似资料:
  • 我试图将@Age constraint的实现从java复制到Kotlin,我复制了Java代码库,并使用IDE将其转换为Kotlin代码。 Java代码 Intellij生成的对应静态编程语言代码 Kotlin代码导致错误声明“注释类中不允许成员”。将注释类List从Age中移出是否可以解决此问题?还有其他方法可以在另一个类中实现注释类吗? 非常感谢。

  • 我有以下问题:-创建了几个模块来实现类,并用-我的Android应用程序正在使用检索这些类。但是由于某种原因,没有在

  • 如何为方法/类生成注释?只需输入: 推入似乎在IntelliJ IDEA 2016.1.3中不起作用 看起来Dokka已经取代了KDoc,但为什么IntelliJ中没有支持?还是我错过了什么? 澄清:当输入/**enter时,会生成: 但是我想知道为什么没有添加@参数和其他的生成(就像IntelliJ为Java所做的那样)。这些注释也用于记录静态编程语言代码(https://kotlinlang.

  • 我正在开发一个使用 JPA 和Hibernate的项目,我刚刚注意到实体没有任何关系注释,例如@ManyToOne、@OneToOne等。所以我的问题是,JPA / Hibernate是否为每个案例添加了默认注释? 这里有一个例子 JPA是否默认在此属性中添加@OneTo的注释?

  • css中注释的作用包括帮助你组织样式、以后你看自己的代码时明白为什么这样写,以及简单的样式说明。但是,你并不希望每个浏览网站源码的人都能看到所有注释。 sass另外提供了一种不同于css标准注释格式/* ... */的注释语法,即静默注释,其内容不会出现在生成的css文件中。静默注释的语法跟JavaScriptJava等类C的语言中单行注释的语法相同,它们以//开头,注释内容直到行末。 body

  • 我试图转换一些使用Jackson的@JsonSubTypes注释来管理多态性的Java代码。 以下是可用的Java代码: 以下是我认为等效的Kotlin代码: 但我在三行“JsonSubTypes.Type”中的每一行都会出现以下错误: 知道吗?