Java 枚举

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

回到顶部