Java 枚举
一、定义
enum Week{Mon,Tue,Wen,Thu,Fri,Sat,Sun
}
enum实际上是继承自java.lang.Enum的子类
枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal)
构造函数中
上面的Week一共调用了7次这个构造函数。
二、拓展
我们可以把enum看作是普通的类,除了他不能继承其他的类以外,(默认已经继承自Enum了)。
一个简单的例子
enum Week1{Mon(1),Tue(2),Wen(3),Thu(4),Fri(5),Sat(6),Sun(0);
int value;
Week1(int value){
this.value=value;
}
public int getValue() {
return value;
}
}
在enum中我们增加了value,并且重新写了他 的构造函数,初始化他的value值。
事实上上面的enum等价于
class week1{public static final week1 MON=new week1(1);
public static final week1 TUE=new week1(2);
public static final week1 WED=new week1(3);
public static final week1 THU=new week1(4);
public static final week1 FRI=new week1(5);
public static final week1 SAT=new week1(6);
public static final week1 SUN=new week1(0);
private int value;
week1(int value){
this.value=value;
}
public int getValue() {
return value;
}
}
enum的好处就在于可以方便的做相关的常量的定义和处理。
三、相关方法介绍
//values返回整个enum的数组
for(Week w:Week.values()){System.out.println(w);
}
//使用switch非常的方便Week w=Week.Tue;
switch (w) {
case Mon:
System.out.println("Mon");
break;
case Tue:
System.out.println(Week.Tue);
}
//反射获得父类
System.out.println("getDeclaringClass(): " + w.getDeclaringClass().getName());
//name() 和 toString()
System.out.println("name(): " + w.name());
System.out.println("toString(): " + w.toString());
//ordinal(), 返回值是从 0 开始
System.out.println("ordinal(): " + w.ordinal());
四:EnumSet和EnumMap
public class Test {public static void main(String[] args) {
// EnumSet的使用
EnumSet<EnumTest> weekSet = EnumSet.allOf(EnumTest.class);
for (EnumTest day : weekSet) {
System.out.println(day);
}
// EnumMap的使用
EnumMap<EnumTest, String> weekMap = new EnumMap(EnumTest.class);
weekMap.put(EnumTest.MON, "星期一");
weekMap.put(EnumTest.TUE, "星期二");
// ... ...
for (Iterator<Entry<EnumTest, String>> iter = weekMap.entrySet().iterator(); iter.hasNext();) {
Entry<EnumTest, String> entry = iter.next();
System.out.println(entry.getKey().name() + ":" + entry.getValue());
}
}
}
关于enum最重要的是知道,他的原理,其实就是java通过这样的一个关键字,使得你能够很方便的使用一些常量。
本事上还是class,这个class的结构你也一定要清楚。
以上是 Java 枚举 的全部内容, 来源链接: utcz.com/z/393589.html