web-dev-qa-db-fra.com

Kotlin enum class dans les performances Android

En Java, on nous dit de éviter strictement d'utiliser des énumérations sur Android car elles prennent deux fois plus de mémoire.

Cela s'applique-t-il également au enum class dans Kotlin? Est-ce qu'une Kotlin enum sera compilée dans une Java enum?

17
Arbitur

Il semblerait que oui.

J'ai créé ceci à Kotlin:

enum class Thingies {
    Red,
    Green,
    Blue
}

Et décompilé avec javap -v, et voici l'en-tête:

public final class Thingies extends Java.lang.Enum<Thingies>
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_ENUM

En bout de ligne: ils sont identiques, vous devez donc probablement les traiter de la même manière.

14
Todd

Ils sont exactement la même chose, un Kotlin Enum est un Java JVM Enum. 

4
Jayson Minard

Vous pouvez très certainement utiliser des enums dans Android maintenant, ils ont spécifiquement abordé ce sujet dans cette vidéo de Google I/O: https://www.youtube.com/watch?v=IrMw7MEgADk si vous ne voulez pas regarder la vidéo en entier, commencez de 11h30 à 14h40).

1
Rambo7