将单个元素分配给Kotlin注释中的IntArray值属性

我有一个声明为自定义注释

@Target(AnnotationTarget.FUNCTION) annotation class Anno(val value: IntArray, val attr2: Int = 0) 

对于单个元素声明,我可以在Java类中使用上面的注释

 @Anno(1) 

但是在Kotlin课上写同样的内容时,我必须把括号括起来

 @Anno([1]) 

在这种情况下,括号不是不必要的,还是我声明注释是错误的? 我正在使用Kotlin版本1.2.0-rc-39

是的,方括号(Kotlin 1.2+)或arrayOf (Kotlin 1.2-)是必需的。

但只要这是你在Kotlin编写的注释,就可以用它做一些花哨的事情 ,比如带上lambda或者可变参数,所以你可以尝试根据你的需要调整结果语法。 例如,这将是有效的语法,即使在Kotlin 1.2中:

 @Target(AnnotationTarget.FUNCTION) annotation class Anno( val attribute: String, vararg val value: Int ) @Anno("test", 1, 2, 3) fun test() = 42 

你需要把vararg参数放在最后。