实例化枚举类

Har*_*ran 11 java enums

考虑我有以下枚举类,

public enum Sample {
    READ,
    WRITE
}
Run Code Online (Sandbox Code Playgroud)

在下面的课程中我试图测试枚举类,

public class SampleTest {
    public static void main(String[] args) {
        testEnumSample(Sample.READ);
    }

    public static void testEnumSample(Sample sample) {
        System.out.println(sample);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里我指定Sample.READ然后将它作为参数传递给方法testEnumSample.相反,如果我们想要实例化枚举类并将其作为参数传递给我们需要做什么?

Jon*_*eet 27

在这里,我需要指定Sample.READ将其作为参数传递.相反,如果我们想要实例化枚举类并将其作为参数传递给我们需要做什么?

什么"实例化枚举类"甚至意味着什么?枚举的要点是有一组固定的值 - 以后不能再创建.如果你想这样做,你不应该使用枚举.

还有其他获取枚举值的方法.例如,您可以获得第一个声明的值:

testEnumSample(Sample.values()[0]);
Run Code Online (Sandbox Code Playgroud)

或者传递名称并使用Sample.valueOf:

testEnumSample("READ");

...

Sample sample = Sample.valueOf(sampleName);
Run Code Online (Sandbox Code Playgroud)

如果您解释了您想要实现的目标,那么它将更容易为您提供帮助.


Mar*_*arc 16

在内部,枚举将被翻译成这样的东西

class Sample extends Enum {
    public static final Sample READ = new Sample("READ", 0);
    public static final Sample WRITE = new Sample("WRITE", 1);

    private Sample(String s, int i)
    {
        super(s, i);
    }

    // More methods, e.g. getter
}
Run Code Online (Sandbox Code Playgroud)

它们不应该也不能初始化.


NIN*_*OOP 9

枚举不支持公共构造函数,因此无法实例化.枚举适用于具有一组固定相关常量的情况.将为每个枚举常量创建一个实例.


Mav*_*arn 5

检查我在另一篇文章中的答案。

有2种方法:

使用Enum.valueOf()静态函数,然后将其转换为枚举类型。

Enum v = Enum.valueOf(TheEnumClass, valueInString);
Run Code Online (Sandbox Code Playgroud)

使用class.getEnumConstants()函数获取枚举常量列表,然后循环该列表并获取。

Plugins[] plugins = Plugins.class.getEnumConstants();
for (Plugins plugin: plugins) {
    // use plugin.name() to get name and compare
}
Run Code Online (Sandbox Code Playgroud)