Kotlin:如何将数组传递给Java注释
我想从package io.dropwizard.validation;
使用@OneOf
注解package io.dropwizard.validation;
Java用法:
@OneOf(value = {"m", "f"})
Kotlin用法:???
我试过这个:
@OneOf(value = arrayOf("m", "f"))
和这个:
@OneOf(value = ["m", "f"])
我得到的是:
类型推断失败。 期望的类型不匹配:
必需:字符串
找到:
Array<String>
Kotlin版本:1.1.2-2
value
参数会自动转换为Kotlin中的可变参数参数,如http://kotlinlang.org/docs/reference/annotations.html#java-annotations中所述 。
这个特殊情况的正确语法是@OneOf("m", "f")
在Kotlin 1.2中,它支持注释中的数组字面量。 所以下面的语法在Kotlin 1.2中变得有效:
@OneOf(value = ["m", "f"])
作为Kotlin文档的一个例子
@AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) class C