将单个元素分配给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

One Solution collect form web for “将单个元素分配给Kotlin注释中的IntArray值属性”

是的,方括号(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参数放在最后。

  • 实体类型参数和内部函数
  • 如何在Guice中绑定Kotlin函数
  • 返回值没有设置
  • 如何在kotlin中使用Android支持typedef注释?
  • 限制的可调用的引用不与反应堆订阅
  • 有没有关于在java nio selectionKey.attachment()的任何错误?
  • 返回到后面堆叠的片段
  • 如何使用Tab布局与数据绑定库和Kotlin
  • TornadoFX将域类包装到ItemViewModel
  • 无法使用Android从测试来源访问内部组件
  • 升级到kotlin RC1(1.0.0-rc-1036)之后的java.lang.IncompatibleClassChangeError
  • Kotlin language will be the best programming language for Android.