我是 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
class
或interface
,但注释处理器不允许任何非注释类。 - 我还尝试在 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/