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

标签 java kotlin osgi apache-felix

我是 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/

相关文章:

java - 注销Struts 2.0应用程序后的chrome后退按钮

java - 尝试在比赛后删除最多 2 位数字

Kotlin - var 与对象声明之间的区别

java - bundle 和 jar 之间的 OSGI 和 Maven 依赖关系

java - 给定最大长度求毕达哥拉斯三元和

java - 高效地从 Google Cloud Storage 中删除多个 blob

android - Android 10 中已弃用 getExternalStorageDirectory

java - 即时优化 Android Studio/IntelliJ 中所有项目的导入

java - 如何使用 OSGi 片段贡献具有相同文件名的平台相关 native 代码?

ant - 使用 BND 嵌入第三方 JAR