将单个元素分配给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参数放在最后。

  • Android Studio构建失败,Kotlin
  • Robolectric测试和LiveData
  • 使用Gradle编译Kotlin jar时,在META-INF中生成无效的元数据
  • 在Kotlin阅读和处理HOCON
  • 如何实施一个有限的调用与改造阻塞客户端和协程
  • Kotlin泛型在类层次结构中不匹配
  • Spring Data JPA如何使用Kotlin空值而不是可选值
  • Android Studio 3.0支持Kotlin:Activity as Context
  • Android Kotlin不能在lambda中使用list.sort()
  • kotlin coroutine val vs乐趣
  • 我可以比较Kotlin中两个浮点数是否相等吗?
  • Kotlin language will be the best programming language for Android.