gpt4 book ai didi

java - 在 Kotlin 中用成员表达 Java 注解类

转载 作者:行者123 更新时间:2023-11-30 05:38:42 25 4
gpt4 key购买 nike

我是 Kotlin 新手,目前在 OSGI bundle 开发 POC 中使用 v1.3.31。我目前正在使用注释处理器来生成 OSGI list 声明,并且我正在尝试找到以下内容的 Kotlin 等效项:

@ObjectClassDefinition(name="Config", description = "Sample Config")
public static @interface Config {
@AttributeDefinition(name = "A parameter", description = "Configurable param")
String myParameter() default "";
}

假设这些 OSGI 注释被创建为:

@Retention(RetentionPolicy.CLASS)
@Target(ElementType.TYPE)
public @interface ObjectClassDefinition

/*....*/

@Retention(RetentionPolicy.CLASS)
@Target(ElementType.METHOD)
public @interface AttributeDefinition

我在 Kotlin 中能得到的最接近的是在 公共(public)注释类 上使用 @ObjectClassDefinition 注释,但由于 Kotlin 注释类不支持成员,我无法使用 @AttributeDefinition 在类成员上。

  • 我尝试仅使用 Kotlin classinterface,但注释处理器不允许任何非注释类。
  • 我还尝试在 Kotlin 中创建 java.lang.Annotation 来绕过此行为,但编译器不允许这样做。

当前部分工作实现,这是最新的工作 GitHub source. :

@ObjectClassDefinition(name = "Sample Kotlin servlet",
description = "Simple Kotlin servlet with configurable properties")
public annotation class Config (
val value : String = "hello"
)

我注意到 Kotlin 中的注释可能特别棘手。非常感谢任何见解!

最佳答案

@ObjectClassDefinition(
name = "Sample Kotlin servlet",
description = "Simple Kotlin servlet with configurable properties")
annotation class Config (
@get:AttributeDefinition(name = "A parameter", description = "Configurable param")
val value : String = "hello")

(“public”似乎没有任何作用)。有关详细信息,请参阅此文档 annotation-use-site-targets

关于java - 在 Kotlin 中用成员表达 Java 注解类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56137109/

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