我是Java的新手,即使看起来很简单,我似乎无法找到这个问题的答案。
我来自C背景,用于创建枚举并通过调用枚举的名称来使用它们......
enum Security_Levels
{
black_ops,
top_secret,
secret,
non_secret
};
所以我可以使用black_ops,我会得到一个0。
在Java中,您可以在单独的文件夹中定义枚举,并将其导入到您要使用它的位置。但与C不同的是,我无法对枚举对象进行简单的调用。
public enum GroupID
{
camera,
projector,
preview,
slr,
led
}
当我尝试调用预览时,它不起作用...我必须创建枚举对象的实例
GroupID egroupid_preview = GroupID.preview;
然后,即使我创建了一个实例,我也必须创建公共函数来访问该值,如下所示。
public enum GroupID
{
camera(1),
projector(2),
preview(3),
slr(4),
led(5);
private int val;
private GroupID(int val) {
this.val = val;
}
int getVal() {
return val;
}
}
我这样做是错的还是有一个原因让java难以访问枚举?
答案 0 :(得分:2)
Java枚举器是特殊的静态对象,默认情况下不包含任何值。它们通常按名称使用:
enum Foo
{
foo,
bar,
oof;
}
public void func(Foo arg)
{
if(arg == Foo.bar)
// do bar code
switch(arg)
{
case foo: // do foo code
case oof: // do oof code
}
}
如果你需要枚举中的实际值,你可以使用你自己创建的函数或者做这样的事情:
enum Foo
{
foo (1),
bar (2),
oof (3);
public final int val;
Foo(int val)
{
this.val = val;
}
}
public static void main( String[] args )
{
Foo f = Foo.bar;
int val = f.val;
}