枚举:使用枚举和带有静态变量的类之间的区别

vip*_*per 4 java enums android design-patterns static-variables

我对使用enum和使用 ajava class和定义有一个小问题static variables

例如,我们可以定义枚举,如下所示:-

public enum RequestCodeEnum {

    TRANSACTION(1), REPORTS(2), BUDGET(3), CATEGORY(4), CURRENCY(5);

    private int value;

    private RequestCodeEnum(int value) {
        this.value = value;
    }

    public int getCode(){
        return value;
    }

}
Run Code Online (Sandbox Code Playgroud)

对于同样的事情,我们可以使用带有静态变量的 java 类,例如:-

public class ActivityRequestCode {

    public static int TRANSACTION_CODE  = 1;
    public static int REPORTS           = 2;
    public static int BUDGET            = 3;
    public static int CATEGORY          = 4;
    public static int CURRENCY          = 5;

}
Run Code Online (Sandbox Code Playgroud)

为了调用这两个类,我们可以这样做:-

int i = RequestCodeEnum.CATEGORY.getCode();
int j = ActivityRequestCode.TRANSACTION_CODE;
Run Code Online (Sandbox Code Playgroud)

我想知道它会产生什么区别,或者这些解决方案是否是彼此的替代解决方案。7

谢谢。

bar*_*arq 5

不同之处在于,常量在 Android 上更受青睐,因为它们消耗的内存更少。

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

请参阅https://developer.android.com/topic/performance/memory.html

  • 我还会阅读这个答案:http://stackoverflow.com/questions/29183904/should-i-strictly-avoid-using-enums-on-android (2认同)