Kotlin:如何将数组传递给Java注释

时间:2017-05-19 11:36:40

标签: kotlin kotlin-interop

我想使用@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

4 个答案:

答案 0 :(得分:18)

http://kotlinlang.org/docs/reference/annotations.html#java-annotations中所述,value参数会自动转换为Kotlin中的vararg参数。

此特定情况的正确语法为@OneOf("m", "f")

答案 1 :(得分:11)

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

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

答案 2 :(得分:2)

来自Kotlin docs

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

答案 3 :(得分:0)

除值以外的注释参数示例。非文字也可以在[]

内部传递
@RequestMapping(value = "/{isbn}", method=[RequestMethod.GET])
fun getBook(@PathVariable isbn: String) : Book = bookRepository.findBookByIsbn(isbn)