为什么我必须在Java中创建枚举实例?
我是Java新手,虽然这个问题看起来很简单,但我似乎找不到答案 我来自C语言背景,习惯于创建枚举并通过调用枚举的名称来使用它们,就像这样为什么我必须在Java中创建枚举实例?,java,android,enums,Java,Android,Enums,我是Java新手,虽然这个问题看起来很简单,但我似乎找不到答案 我来自C语言背景,习惯于创建枚举并通过调用枚举的名称来使用它们,就像这样 enum Security_Levels { black_ops, top_secret, secret, non_secret }; 所以我可以用黑色的,我会得到一个0 在Java中,您可以在单独的文件夹中定义枚举,并将其导入到要使
enum Security_Levels
{
black_ops,
top_secret,
secret,
non_secret
};
所以我可以用黑色的,我会得到一个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使访问枚举变得如此困难?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;
}
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;
}
“我必须创建枚举对象的实例”——这不是创建实例。“我必须创建公共函数才能访问该值”——这是因为
enum
不必具有任何类型的“值”,并且该值不必是int
。您认为枚举是一个int,而实际上它在Java中并不是这样。枚举是对象。那么你不能像在C中那样在Java中使用枚举?如果您必须定义每个项,那么Java中的枚举有什么意义?是的,您不能像使用C一样使用Java。“我必须创建枚举对象的实例”——这不是创建实例。“我必须创建公共函数才能访问该值”——这是因为enum
不必具有任何类型的“值”,并且该值不必是int
。您认为枚举是一个int,而实际上它在Java中并不是这样。枚举是对象。那么你不能像在C中那样在Java中使用枚举?如果您必须定义每个项,那么Java中的枚举有什么意义?是的,您不能像使用C一样使用Java。我发现enum的name()函数很有用。我发现enum的name()函数很有用。