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ó 🙂

  • Obligatorio <Objeto> y encontrado <Objeto>?
  • kotlin para anular los types de protobuf a String
  • ¿Cuáles son las ventajas del lenguaje de progtwigción Kotlin?
  • ClassNotFoundException en el proyecto de Android solo en mi PC
  • Convertir la function de raíz imperativa en estilo funcional en kotlin
  • Kotlin: delegado de propiedad nulable observable
  • java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: no se puede fusionar dex
  • Framework Azure Mobile App con Android (solo Kotlin)
  • Clase abstracta de Kotlin con param genérico y methods que usan param de tipo
  • Invoque RxJava2 cancelable / desechable del hilo correcto
  • No se puede realizar la adición de BigInteger