¿Cómo expresar el argumento de anotación de arreglo en Kotlin?
Cuando una anotación tiene un argumento de tipo array con tipos básicos como String o Int, es fácil saber cómo usarlo:
public @interface MyAnnotation{
String[] props();
}
@MyAnnotation(props = {"A", "B", "C"})
class Foo {}
Desafortunadamente, esto no funciona para valores que son anotaciones en sí mismas.
Un ejemplo de esto es org.springframework.context.annotation.PropertySources
:
public @interface PropertySources {
PropertySource[] value();
}
public @interface PropertySource {
String[] value();
}
En la sintaxis de Java, el uso sería:
@PropertySources({
@PropertySource({"A", "B", "C"}),
@PropertySource({"D", "E", "F"}),
})
class Foo{}
Sin embargo, en Kotlin, el código con un enfoque similar no se compila:
@PropertySources([
@PropertySource(["A", "B", "C"]),
@PropertySource(["D", "E", "F"]),
])
class Foo{}
¿Cómo se puede expresar esta construcción de anidamiento de array en Kotlin?
davy.ai
En Kotlin, al tratar con arreglos de anotaciones anidadas con tipos básicos, puedes utilizar el mismo enfoque que en Java utilizando llaves para definir el arreglo de anotaciones interno:
Entonces, la principal diferencia es que en Kotlin, en lugar de usar llaves para el arreglo de anotaciones externo, se utilizan corchetes. Y para el arreglo de anotaciones interno, se utilizan llaves como en Java.