java 枚举数组的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 枚举数组的问题相关的知识,希望对你有一定的参考价值。

public static void main(String[] args)
String name="B";

Grade g = Grade.valueOf(Grade.class, name);
Grade gs[] = Grade.values();
for(Grade g1 : gs)
System.out.println(g1.name());


enum Grade
A,C;


为什么输出这个枚举数组 只有我原来在类定义的A,C 没有B呢

枚举enum是关键字,和private、public等一样是关键字,不是enum类,
对于关键字,api没有列出其介绍。

enum Color//枚举常量
 red,green,black


Color colors[]=Color.values();

参考技术A values()是枚举定义的一个静态方法。
示例代码:
enum A
b,a;

static final class A extends Enum
public static A[] values()
A aa[];
int i;
A aa1[];
System.arraycopy(aa = ENUM$VALUES, 0, aa1 = new A[i = aa.length], 0, i);
return aa1;

public static A valueOf(String s)
return (A)Enum.valueOf(com/taobao/et/biz/Test$A, s);

public static final A b;
public static final A a;
private static final A ENUM$VALUES[];
static
b = new A("b", 0);
a = new A("a", 1);
ENUM$VALUES = (new A[]
b, a
);


private A(String s, int i)
super(s, i);


两个静态方法“隐藏”在所有枚举类型声明中。因为它们是枚举子类上的静态方法,而不是Enum本身的方法,所以它们在java.lang.Enum的javadoc中没有出现。
第一个是values(),返回一个枚举类型所有可能值的数组。
第二个是valueOf(String arg0),为提供的字符串返回一个枚举类型,该枚举类型必须精确地匹配源代码声明。

Java枚举可以迭代吗? [复制]

【中文标题】Java枚举可以迭代吗? [复制]【英文标题】:Can Java enum be iterated? [duplicate] 【发布时间】:2013-12-21 05:15:43 【问题描述】:

我可以执行me[1]MyEnum[1] 之类的操作吗?如果我有:

enum MyEnum e1,e2,e3,e4; //... MyEnum me;

我已经尝试过了,但它似乎会产生错误。是另一种方式吗,还是我可以只使用MyEnum.e2之类的东西?

【问题讨论】:

YourEnum.values() 并迭代数组。 【参考方案1】:

Java 枚举可以迭代吗?

是的,enum 可以用values() 方法迭代

 for(MyEnum myenum: MyEnum.values())
   // ..
 

我可以做类似 me[1] 或 MyEnum[1] 的事情吗?

MyEnum.values() return MyEnum[] 可以放索引的地方

MyEnum[] me=MyEnum.values();
MyEnum secVal= me[1]; //it will return e2.

【讨论】:

【参考方案2】:

MyEnum.values() 是您可能正在寻找的。​​p>

【讨论】:

是的,就是这样!谢谢。

以上是关于java 枚举数组的问题的主要内容,如果未能解决你的问题,请参考以下文章

Java枚举中的方法调用问题

Java中如何调用枚举类中的数组

java里枚举类型用于返回一个数组的方法values()在哪个里啊?

用java实现 枚举从数组arr中取n个数,组成新数组的所有情况

将数组常量传递给枚举构造函数[重复]

Java枚举可以迭代吗? [复制]