2016-12-05 71 views
2

我有一个小问题,使用enum和使用java 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; 
    } 

} 

而且同样的事情,我们可以使用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; 

} 

以及调用两个我们可以做的类: -

int i = RequestCodeEnum.CATEGORY.getCode(); 
int j = ActivityRequestCode.TRANSACTION_CODE; 

我想知道它会产生什么差异或是那些alternat彼此之间的解决方案。 7

谢谢。

+2

如果你想有一个通用的答案检查其他问题的答案,但如果你想具体到Android的回答,请重写你的问题明确提到它 –

+0

@ T.J。我认为这可能是一个重复的地方,但是对于这个实例来说,标记的过于笼统。 – ChiefTwoPencils

+0

@ChiefTwoPencils:也许:http://stackoverflow.com/questions/5252465/android-enum-vs-static-final-ints –

回答

3

区别在于常量在Android上是首选,因为它们消耗的内存较少。

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

https://developer.android.com/topic/performance/memory.html

+2

我也会读这个答案:http://stackoverflow.com/questions/29183904/should-i-strictly-avoid-using-enums-on-android – abbath

+0

谢谢你的答案。现在我对何时使用'enums'有一个清晰的概念。 – viper