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

Kotlin:如何将数组传递给Java注释,kotlin,kotlin-interop,Kotlin,Kotlin Interop,我想使用package io.dropwizard.validation中的@OneOf注释 Java用法: @OneOf(value = {"m", "f"}) Kotlin用途: 我试过这个: @OneOf(value = arrayOf("m", "f")) 这是: @OneOf(value = ["m", "f"]) (编辑:这个例子从Kotlin 1.2开始工作,它支持注释中的数组文字,谢谢@BakaWaii) 我得到的只是: 类型推断失败。预期类型不匹配: 必需:字符串 找

我想使用
package io.dropwizard.validation中的
@OneOf
注释

Java用法:

@OneOf(value = {"m", "f"})
Kotlin用途:

我试过这个:

 @OneOf(value = arrayOf("m", "f"))
这是:

 @OneOf(value = ["m", "f"])
(编辑:这个例子从Kotlin 1.2开始工作,它支持注释中的数组文字,谢谢@BakaWaii)

我得到的只是:

类型推断失败。预期类型不匹配:

必需:字符串

找到:
数组


Kotlin版本:1.1.2-2

如中所述,
参数自动转换为Kotlin中的vararg参数


在Kotlin 1.2中,这种特殊情况的正确语法是
@OneOf(“m”,“f”)

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

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


值以外的注释参数示例。非文本也可以在[]内传递

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

要将数组作为vararg参数传递,请使用spread(*)运算符
@OneOf(value=*arrayOf(“m”,“f”))
知道如何将其作为变量传递吗?比如,val someArray=arrayOf(“abc”、“foo”、“bar”),我在下面的方法中尝试了它,它给我的
应该是编译时常量exception
1)@OneOf(names=someArray)2)@OneOf(names=*someArray)
@RequestMapping(value = "/{isbn}", method=[RequestMethod.GET])
fun getBook(@PathVariable isbn: String) : Book = bookRepository.findBookByIsbn(isbn)