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