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)