在 Kotlin 中用 Members 表达 Java 注解 Class

Expressing Java Annotation Class with Members in Kotlin

我是 Kotlin 的新手,目前在 OSGI 包开发 POC 中使用 v1.3.31。我目前正在使用注解处理器来生成 OSGI 清单声明,我正在尝试找到以下 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 annotation class 上使用 @ObjectClassDefinition 注释,但是由于 Kotlin 注释 classes 不支持成员,我不能使用 @AttributeDefinition 在 class 成员上。

当前部分工作的实施,这是最新的工作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