@OneOf
のpackage io.dropwizard.validation;
アノテーションを使用したい
Javaの使用法:
@OneOf(value = {"m", "f"})
Kotlinの使用法:???
私はこれを試しました:
@OneOf(value = arrayOf("m", "f"))
この:
@OneOf(value = ["m", "f"])
(編集:この例はKotlin 1.2以降で機能し、アノテーションで配列リテラルをサポートしています。@ BakaWaiiに感謝します)
私が得るすべては:
型推論に失敗しました。予想されるタイプの不一致:
必須:文字列
見つかった:
Array<String>
Kotlinバージョン:1.1.2-2
http://kotlinlang.org/docs/reference/annotations.html#Java-annotations で説明されているように、value
パラメータはKotlinのvarargパラメータに自動的に変換されます。
この特定のケースの正しい構文は@OneOf("m", "f")
です
Kotlin 1.2では、アノテーションで配列リテラルをサポートしています。したがって、以下の構文はKotlin 1.2で有効になります。
@OneOf(value = ["m", "f"])
Kotlin docs の例
@AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) class C
値以外の注釈パラメーターの例。非リテラルも[]内で渡すことができます
@RequestMapping(value = "/{isbn}", method=[RequestMethod.GET])
fun getBook(@PathVariable isbn: String) : Book = bookRepository.findBookByIsbn(isbn)