【Java】关于枚举类型遍历的问题
本文介绍了【Java】关于枚举类型遍历的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
最近在学习Java,遇到了枚举类型(enum),遇到了一些问题。根据网上的一些大神文章,基本了解枚举,但是还是有些问题没有解决:
-
枚举类型的初始化是什么样的,或者说它能像其他类一样初始化吗?
如:Color color = ........;//Color为一个枚举类型,可以用这样类似的方式初始化吗?
-
关于遍历
for(Color color :Color.values()){.......}
//本人已经知道上述的例子中,括号中的句子实现的是返回一个数组的功能,但是不理解这个:号是什么意思,为什么要声明一个枚举类型变量?
解决方案
第一个问题:
首先要明确通常是用枚举类型来描述一组常量。
枚举类型是不可以实例化的。问题中描述的 Color color = ........;
初始化方式显然是不可以的。而枚举初始化则经常讨论的是枚举内部静态成员的初始化。
第二个问题:
所谓的:,其实只是Java增强for循环一个语法糖。
public enum Color {
RED(0), BLACK(1);
private int value;
Color(int value) {
this.value = value;
}
public static void main(String[] args) {
for (Color color : Color.values()) {
System.out.println(color.value);
}
}
}
编译之后的.Class文件如下:
public enum Color {
RED(0),
BLACK(1);
private int value;
private Color(int var3) {
this.value = var3;
}
public static void main(String[] var0) {
Color[] var1 = values();
int var2 = var1.length;
for(int var3 = 0; var3 < var2; ++var3) {
Color var4 = var1[var3];
System.out.println(var4.value);
}
}
}
从编译后的代码中可以看出,:形式的循环,本质上和一般循环或者遍历没有区别。
这篇关于【Java】关于枚举类型遍历的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文