Java: Enum vs. Int
在Java中使用标志时,我看到了两种主要方法。一个使用 int 值和一行 if-else 语句。另一种是使用枚举和大小写开关语句。
我想知道在内存使用和速度方面,使用枚举与整数进行标志之间是否存在差异?
在Java中使用标志时,我看到了两种主要方法。一个使用 int 值和一行 if-else 语句。另一种是使用枚举和大小写开关语句。
我想知道在内存使用和速度方面,使用枚举与整数进行标志之间是否存在差异?
两者都可以使用switch或if-then-else,并且两者的内存使用量也最小,并且速度相似 - 在您提出的观点上,它们之间没有显着差异。ints
enums
但是,最重要的区别是类型检查。 已检查,未检查。Enums
ints
请考虑以下代码:
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
if-then-else
else throw new IllegalArgumentException("Unknown color " + color);
YELLOW
GREEN
3
如果使用 ,则可以解决以下所有问题:enums
内存使用量和速度不是重要的考虑因素。无论哪种方式,您都无法测量差异。
我认为枚举在应用时应该是首选,因为强调选择的值在一起并包含一个闭合集的事实。可读性也大大提高了。使用枚举的代码比分散在代码中的杂散 int 值更具自我记录性。
首选枚举。