我是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中获得的最接近的方法是在@ObjectClassDefinition
上使用public annotation class
注释,但是由于Kotlin注释类不支持成员,因此我不能在类成员上使用@AttributeDefinition
。
class
或interface
,但是注释处理器将不允许任何非注释类。 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中可能特别棘手。任何见解都将不胜感激!
答案 0 :(得分:1)
@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")
(“公共”似乎没有任何作用)。 有关详细信息,请参见此文档annotation-use-site-targets