我是一名中间程序员,遇到了一个难题。
我正在尝试确定在将固定的参数用于某些方法时使用的策略。
e.g。我想这样做:
void aMethod (int i, Color color)
其中Color是我自己的创作。
我看到它的方式,我可以创建一个枚举颜色。我知道该怎么做。
我也可以这样做:
public class Color{
public static Color blue = new Color(23, 22, 21);
public static Color red = new Color(12, 32 ,10);
private int a;
private int b;
private int c;
private Color(int a, int b, int c){
this.a = a;
this.b = b;
this.c = c;
}
methods...
问题是,在尝试两者之后,我可以用它们做同样的事情。唯一的区别是我觉得我的课堂例子更容易理解,我确切知道它的作用。虽然我可以编写一个多功能枚举,但我并不完全确定哪些变量是静态的,公共的,私有的等等,也不确定它将使用什么样的内存。这有点乱。
所以,我的问题是,我应该选择上面的课程,而不是枚举吗?是否有一些我不知道可能会增加Enums案例的事情?
答案 0 :(得分:1)
在你的方法中
void aMethod (int i, Color color)
如果您使用枚举作为参数。您只能使用在枚举中定义的颜色。 但是,如果使用静态实例,则无法确保该参数是Color类中的实例颜色。实际上,任何Color变量都可以转换为这种方法。
实际上,枚举在内存中是整数,使用枚举可以节省一些时间。
答案 1 :(得分:1)
在以下情况下使用枚举:
在以下时间使用静态:
您的情况:
答案 2 :(得分:0)
如果可能(你的值有限,并且不想允许动态创建的值),我总是会选择枚举。
for(ColorEnum enumEntry : ColorEnum.values())
//do something with enumEntry
ColorEnum ce; // with some value of course
switch (ce) {
case blue:
break;
case red:
break;
default:
break;
}
new JComboBox<>(ColorEnum.values());