Android中enum的最佳替代方案是什么?

时间:2015-10-07 12:08:46

标签: android enums

如果枚举不是内存友好类型,那么Android环境中最好的选择是什么。

4 个答案:

答案 0 :(得分:8)

  

如果枚举不是内存友好型

很少有Java和Android专家同意该Google Google员工关于枚举的论点。例如,请参阅Jake WhartonBob LeeJoshua Bloch

  

Android环境中最好的替代方案

Android SDK主要使用int个常量(static final)。

答案 1 :(得分:2)

如果您有内存约束,请使用静态常量。 以下枚举大约需要1,112个字节

public static enum Things {
    THING_1,
    THING_2;
};

或者你可以有两个静态int,它将占用128个字节。

public static int THING_1 = 1;
public static int THING_2 = 2;

你的dex文件大小提高了10倍。

另一方面,Enums有自己的优势 - 可读性,可用性,类型安全代码。我只会在特殊的极端情况下担心枚举。

答案 2 :(得分:0)

我希望你指的是this document

  

枚举通常需要的内存是静态内存的两倍多   常量。你应该严格避免在Android上使用枚举。

声明中暗示应使用静态常量而不是枚举。

答案 3 :(得分:0)

我个人会使用public static final字段。

public static final int CONST_1 = 0;
public static final int CONST_2 = 1;