Anotaciones anidadas en Kotlin

En Java es posible crear annotations anidadas como esta:

public @interface InnerInnotation { String value(); } public @interface OuterAnnotation { InnerAnnotation[] value() default { @InnerAnnotation("Hello"), @InnerAnnotation("World") } } annotation class InnerAnnotation(val value: String) 

Pero cuando trato de hacer lo mismo en Kotlin, obtengo un error de compilation:

 annotation class OuterAnnotation( // Next line doesn't compile: "Annotation class cannot be instantiated" val value: Array<InnerAnnotation> = arrayOf(InnerAnnotation("Test")) ) 

Sin embargo, un campo de anotación de instancia única funciona bien:

 annotation class OuterAnnotation( val value: InnerAnnotation = InnerAnnotation("Hello World") ) 

¿Hay alguna forma de definir una anotación con un campo de matriz de anotación anidada y especificar un valor pnetworkingeterminado para este campo?

Este es un error en el comstackdor de Kotlin, debería ser permitido. Gracias por el informe! Creé un problema: https://youtrack.jetbrains.com/issue/KT-10136

Sin embargo, no conozco ninguna solución alternativa, excepto la reescritura de OuterAnnotation en Java.

Esto funciona si no usa @ en las annotations anidadas. Por lo que he leído y hablado con los desarrolladores, esta es la syntax prevista para las annotations anidadas. Se siente inconsistente y espero que lo cambien, pero al estar tan cerca de 1.0, las esperanzas son bajas.

  • Diferencia entre Delegates.notNull y lateinit Kotlin
  • ¿Cómo agregar el soporte de Kotlin para Java Lib normal en Android?
  • ¿Por qué no puedo acceder a una enumeración de superclass en Kotlin?
  • Android Kotlin - Volley Código de respuesta inesperada 400
  • Android Kotlin create class implement Parcelable da un error en 'anulación' del método writeToParcel
  • Diferentes posiciones de destino cuando se usan diferentes tamaños de vista con ObjectAnimator
  • La class Kotlin Custom View implementa una interfaz que no se puede resolver en `: app: compileDebugKotlinAfterJava`. La versión idéntica de Java funciona bien
  • Usar la implementación de la function por defecto de la interfaz en Kotlin
  • ViewModel for Fragment en su lugar accediendo a Activity ViewModel?
  • Texto parpadeando en Android, con Kotlin más conciso
  • ¿Cuál es la expresión kotlin para un equivalente a este iterador python