long - Kotlin: cómo pasar el array a la anotación de Java
long array kotlin (3)
Como un ejemplo de http://kotlinlang.org/docs/reference/annotations.html#java-annotations
@AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) class C
Quiero usar la anotación @OneOf
del package io.dropwizard.validation;
Uso de Java:
@OneOf(value = {"m", "f"})
Uso de Kotlin: ???
He intentado esto:
@OneOf(value = arrayOf("m", "f"))
y esto:
@OneOf(value = ["m", "f"])
Todo lo que obtengo es:
La inferencia de tipo falló. Desajuste de tipo esperado:
requerido: cuerda
encontrado:
Array<String>
Versión de Kotlin: 1.1.2-2
El parámetro de value
se convierte automáticamente en un parámetro vararg en Kotlin, como se describe en http://kotlinlang.org/docs/reference/annotations.html#java-annotations .
La sintaxis correcta para este caso particular es @OneOf("m", "f")
En Kotlin 1.2, admite el literal de matriz en la anotación. Así que la siguiente sintaxis se vuelve válida en Kotlin 1.2:
@OneOf(value = ["m", "f"])