在Kotlin嵌套注释

在Java中,可以创建如下所示的嵌套注释:

public @interface InnerInnotation { String value(); } public @interface OuterAnnotation { InnerAnnotation[] value() default { @InnerAnnotation("Hello"), @InnerAnnotation("World") } } annotation class InnerAnnotation(val value: String) 

但是当我试图在Kotlin中做同样的事情时,我得到一个编译错误:

 annotation class OuterAnnotation( // Next line doesn't compile: "Annotation class cannot be instantiated" val value: Array<InnerAnnotation> = arrayOf(InnerAnnotation("Test")) ) 

但是,单个实例注记字段正常工作:

 annotation class OuterAnnotation( val value: InnerAnnotation = InnerAnnotation("Hello World") ) 

有没有一种方法来定义一个嵌套注释数组字段的注释,并指定该字段的默认值?

这是Kotlin编译器中的一个错误,应该允许。 感谢您的报告! 我创建了一个问题: https : //youtrack.jetbrains.com/issue/KT-10136

我不知道任何解决方法,除了在Java中重写OuterAnnotation

如果不在嵌套注释上使用@ ,这将起作用。 就我已经阅读并与开发者讨论的内容而言,这是嵌套注释的预期语法。 这感觉不一致,我希望他们改变它,但接近1.0,希望是低的。