Anotaciones: cuando es arrayOf necesario

Digamos que tenemos una anotación Java de la siguiente manera:

@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Hans { String[] value() default {}; } 

En Kotlin, puedo usar la Anotación de la siguiente manera:

 @Hans(value = "test") 

Tan pronto como cambio el nombre de la propiedad de 'valor' a 'nombre' ya no puedo usar esta syntax, en su lugar necesito tener arrayOf (..).

 @Hans(name = arrayOf("test")) 

¿Es eso un error o una decisión de layout y, de ser así, cuál es la razón detrás de esto?

Muchas gracias de antemano Saludos cordiales

No, esto no es un error. Java trata la anotación de value especialmente y permite omitir el nombre del parámetro de anotación cuando lo usa. Kotlin sigue este tratamiento especial y también le permite omitir el nombre del parámetro, lo que le permite escribir @Hans("test") . El soporte de esta syntax para los parameters de la matriz requiere tratar el parámetro como vararg , por lo que Kotlin lo hace y le permite omitir la arrayOf .

  • Cómo convertir ByteArray a String con juego de caracteres especificado en Kotlin
  • Una forma más simple o más funcional de encadenar objects en Kotlin
  • No se puede enviar datos de formulario / múltiples con Volley
  • Android - ShanetworkingPreferences - Context
  • Kotlin: ¿Qué características de Java 8 aún no son compatibles?
  • Emitir cualquiera a Matriz en Kotlin
  • Función de memorización en Kotlin
  • ¿Puedo pasar información de tipo para simplificar esto de alguna manera?
  • Hacer request HTTP onclick en button en Kotlin
  • Kotlin DialogFragment editText editable always null
  • Android w / Kotlin pure-java-Junit NoClassDefFoundError solución no funciona