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中所&#x8FF0; 。

这个特殊情况的正确语法是@OneOf("m", "f")

在Kotlin 1.2中,它支持注释中的数组字面量。 所以下面的语法在Kotlin 1.2中变得有效:

 @OneOf(value = ["m", "f"]) 

作为Kotlin文档的一个例子

 @AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) class C