在Java中使用标志时,我看到了两种主要方法。使用int值和一组if-else语句。另一个是使用枚举和case-switch语句。
我想知道在使用枚举和整数进行标记之间在内存使用和速度方面是否存在差异?
双方ints并enums可以同时使用开关或IF-THEN-ELSE和内存使用情况也是最小的两个,而速度是类似的-有关于你提到的点之间没有显著差异。
ints
enums
但是,最重要的区别是类型检查。Enums被检查,ints不是。
Enums
考虑以下代码:
public class SomeClass { public static int RED = 1; public static int BLUE = 2; public static int YELLOW = 3; public static int GREEN = 3; // sic private int color; public void setColor(int color) { this.color = color; } }
尽管许多客户会正确使用此功能,
new SomeClass().setColor(SomeClass.RED);
没有什么可以阻止他们写这个:
new SomeClass().setColor(999);
使用该public static final模式存在三个主要问题:
public static final
if-then-else
else throw new IllegalArgumentException("Unknown color " + color);
YELLOW
GREEN
3
如果使用enums,则可以解决所有这些问题: