Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我必须在Java中创建枚举实例?_Java_Android_Enums - Fatal编程技术网

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

为什么我必须在Java中创建枚举实例?,java,android,enums,Java,Android,Enums,我是Java新手,虽然这个问题看起来很简单,但我似乎找不到答案 我来自C语言背景,习惯于创建枚举并通过调用枚举的名称来使用它们,就像这样 enum Security_Levels { black_ops, top_secret, secret, non_secret }; 所以我可以用黑色的,我会得到一个0 在Java中,您可以在单独的文件夹中定义枚举,并将其导入到要使

我是Java新手,虽然这个问题看起来很简单,但我似乎找不到答案

我来自C语言背景,习惯于创建枚举并通过调用枚举的名称来使用它们,就像这样

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()函数很有用。