Cómo implementar la function abstracta en las constantes de Enum

Lo que bash lograr es un patrón simple que estoy usando en Java y debería poder hacerlo en Kotlin de acuerdo con la documentation . Solo quiero declarar una class enum con un par de definiciones constantes que implementan las mismas funciones abstractas.

Mi problema es que no puedo hacer que compile mi código. Siempre recibo el mismo error:

modifier abstract not allowed here

Aquí está el código:

 enum class Program { HOME { override fun readableName(context: Context): String { return context.getString(R.string.program_home) } }, WEEKEND { override fun readableName(context: Context): String { return context.getString(R.string.program_weekend) } }, SHOPPING { override fun readableName(context: Context): String { return context.getString(R.string.program_shopping) } }; abstract fun readableName(context: Context): String } 

Incluso he intentado con el código de muestra de la documentation y, aun así, esto no se comstack.

¿Alguien podría tener una idea sobre este extraño problema? Por cierto, estoy usando Kotlin 1.0.6.

Acabo de probar tu código y está comstackdo normalmente con Kotlin plugin 1.0.6-release-Studio2.2-1

¿Tal vez solo puedas tratar de actualizar el complemento AndroidStudio / Kotlin?

De acuerdo … así que descubrí dónde estaba el problema y no era lo que esperaba. @Kirill Rakhman tenía razón, no había nada de malo con el código enum. Tuve un problema con kapt que, por alguna razón, no fue capaz de generar mis annotations de proyecto. Más específicamente, estaba usando, lo que extrañé como experimental, el nuevo plugin de gradle kapt documentado aquí .

Volví a la configuration de kapt anterior reemplazando

 apply plugin: 'kotlin-kapt' 

por

 kapt { generateStubs = true } 

¡Y funcionó! No estoy seguro de por qué la compilation falló al declarar mi enum sin embargo.

Muchas gracias a los que se tomaron el time de investigarlo y, si tiene alguna idea de por qué el plugin de kapt experimental no se estaba comportando como se esperaba, no dude en comentar esta respuesta, con mucho gusto me gustaría saber qué sucedió 🙂

  • No se puede ejecutar la aplicación hello world como se muestra en O'Reilly - Introducción a la Progtwigción de Kotlin
  • Asignación de valores a ArrayList usando mapTo
  • ¿Cómo usar los methods Spring Data JPA que devuelven un Stream en un bloque try-with-resources en Kotlin?
  • Referencias inyectadas de spring en Kotlin
  • Obtener location Android Kotlin
  • RecyclerView: implementa correctamente la eliminación de SnackBar UNDO (Kotlin)
  • Kotlin sigue diciendo que mi tipo de devolución está mal
  • error: los generics no son compatibles en -source 1.3 al comstackr el código de Java con Kotlin
  • Excepción de puntero nulo en Spring Proxy Class y Kotlin
  • Contrato de testing DSL comportamiento incorrecto / error
  • Bajo performance de la animation de layouts de paralaje en Android