为什么我必须在Java中创建枚举实例?

时间:2016-06-01 18:01:06

标签: java android enums

我是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难以访问枚举?

1 个答案:

答案 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;
}
相关问题