2017-06-03 28 views
7

Trong Java, chúng tôi được thông báo là strictly avoid using enums on Android vì chúng chiếm gấp đôi bộ nhớ.Lớp Kotlin enum trong hiệu năng Android

Điều này có áp dụng cho enum class trong Kotlin không? Một Kotlin enum có được biên dịch thành Java enum không?

+2

Bạn cũng có thể quan tâm đến việc bạn có nên thực sự tránh enums trên Android hay không: https://stackoverflow.com/questions/29183904/should-i-strictly-avoid-using-enums-on-android và https: //stackoverflow.com/questions/5143256/why-was-avoid-enums-where-you-only-need-ints-removed-from-androids-performanc – Ilya

Trả lời

7

Nó sẽ xuất hiện như vậy, có.

Tôi tạo ra này trong Kotlin:

enum class Thingies { 
    Red, 
    Green, 
    Blue 
} 

Và decompiled nó với javap -v, và đây là tiêu đề:

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

Bottom line: họ là giống hệt nhau, vì vậy bạn có thể phải đối xử với họ theo cùng một cách.

4

Chúng chính xác giống nhau, một Kotlin Enum một Java JVM Enum.