Je veux utiliser @OneOf
annotation de package io.dropwizard.validation;
Utilisation de Java:
@OneOf(value = {"m", "f"})
Utilisation de Kotlin: ???
J'ai essayé ça:
@OneOf(value = arrayOf("m", "f"))
et ça:
@OneOf(value = ["m", "f"])
(EDIT: cet exemple fonctionne depuis Kotlin 1.2, il prend en charge le tableau littéral dans l'annotation, merci @BakaWaii)
Tout ce que je reçois est:
L'inférence de type a échoué. Non-correspondance de type attendue:
requis: String
a trouvé:
Array<String>
Version Kotlin: 1.1.2-2
Le paramètre value
est automatiquement converti en paramètre vararg dans Kotlin, comme décrit dans http://kotlinlang.org/docs/reference/annotations.html#Java-annotations .
La syntaxe correcte pour ce cas particulier est @OneOf("m", "f")
Dans Kotlin 1.2, il prend en charge les littéraux de tableau dans les annotations. La syntaxe ci-dessous devient donc valide dans Kotlin 1.2:
@OneOf(value = ["m", "f"])
Comme exemple de Kotlin docs
@AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) class C
Exemple de paramètres d'annotation autres que la valeur. Les non-littéraux peuvent également être passés à l'intérieur []
@RequestMapping(value = "/{isbn}", method=[RequestMethod.GET])
fun getBook(@PathVariable isbn: String) : Book = bookRepository.findBookByIsbn(isbn)