Enum аннотации в Котлине

У меня есть перечисление, которое сериализуется / десериализируется Gson:

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

К сожалению, я заметил, что Gson игнорирует аннотации SerializedName и использует имена верхнего регистра для значений перечисления. Я решил выяснить, почему сериализация не работает так, как предполагалось, и выяснил, что Котлин оставляет все аннотации для значений перечисления. Как я могу сделать эти аннотации в сгенерированном байт-коде?

Похож на меня. Пожалуйста, сообщите об этом трекеру .

В качестве временного обходного пути вы можете написать этот класс в Java

Теперь проблема исправлена, теперь ваш код отлично работает в Kotlin M9 (0.9.66). Если вы перейдете на это, он будет работать так, как вы ожидаете.

например

app 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' } 

top-level build.gradle

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

Я подтвердил это, сделав перечисление без каких-либо связей между именами перечислений и именами SerializedName, и он работал, как ожидалось.