Anotaciones de Enum en Kotlin

Tengo una enumeración serializada / deserializada por Gson:

enum class PacketType { NONE; [SerializedName("request")] REQUEST; [SerializedName("response")] RESPONSE; [SerializedName("event")] EVENT; } 

Lamentablemente, me di count de que Gson ignora las annotations de SerializedName y utiliza nombres en mayúscula para los valores enum. Decidí averiguar por qué la serialization no funciona según lo previsto y descubrí que Kotlin descarta todas las annotations para los valores enum. ¿Cómo puedo hacer que estas annotations aparezcan en bytecode generado?

Parece un error para mí. Informe al rastreador de problemas .

Como una solución temporal, puede escribir esta class en Java

El problema ahora está solucionado, tu código ahora funciona bien en Kotlin M9 (0.9.66). Si actualiza a eso, funcionará como espera.

p.ej

aplicación build.gradle

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'org.jetbrains.kotlin:kotlin-stdlib:0.9.66' compile 'com.google.code.gson:gson:2.3' } 

build.gradle de nivel superior

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:0.13.2' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.9.+' } } 

Confirmé esto haciendo una enumeración sin relación entre los nombres enum y los nombres SerializedName, y funcionó como se esperaba.

  • Tiempo de ejecución obsoleto de Kotlin
  • Diferencia entre cualquier tipo y generics en Kotlin
  • Kotlin y Dagger2
  • Kotlin-android: data binding de reference no resuelto
  • No puedo entender la implementación del código fuente de string.kt en kotlin
  • ¿Cómo puedo ejecutar una sola testing de Android usando Kotlin?
  • comstack código mixto de Kotlin y Java desde la línea de command
  • Kotlin. Aplicación básica de JavaFX
  • Se llama a Android RxJava onNext incluso cuando se anula la suscripción del observador
  • Utilice methods de modificación de forma más expresiva
  • ¿Cómo declarar parámetro como function sin valor de retorno?