//枚舉類 : People.woman 等價於new People().woman
public enum People {
//woman, man;等價於以下
//public static final People2 woman=new People2();
//public static final People2 man=new People2();
woman, man;
}
public enum People2 {
//woman("女"), man("男");等價於以下
//public static final People2 woman=new People2("女");
//public static final People2 man=new People2("男");
woman("女"), man("男");
private String name;
private People2(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public enum People3 {
/* * woman("女") { @Override public void show() { System.out.println("女"); } }, 等價於 public static final People3 woman = new People3("女") { @Override public void show() { System.out.println("女"); } }; */
woman("女") {
@Override
public void show() {
System.out.println("女");
}
},
man("男") {
@Override
public void show() {
System.out.println("男");
}
};
private String name;
private People3(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract void show();
}
測試:ide
public class Test {
public static void main(String[] args) {
System.out.println("------People-------");
People p = People.woman;
System.out.println(p); // woman
// public String toString()返回枚舉常量的名稱,它包含在聲明中。
System.out.println("------People2-------");
People2 p2 = People2.woman;
System.out.println(p2);
System.out.println(p2.getName());
System.out.println("------People3-------");
People3 p3 = People3.woman;
System.out.println(p3);
System.out.println(p3.getName());
p3.show();
System.out.println("-----People3-switch--------");
People3 p32 = People3.woman;
System.out.println(p32);
switch (p32) {
case woman:
System.out.println("woman");
break;
case man:
System.out.println("man");
break;
}
People2 p21 = People2.woman;
People2 p22 = People2.man;
System.out.println("------ordinal 返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數爲零--------");
// int ordinal()
System.out.println(p21.ordinal());
System.out.println(p22.ordinal());
System.out.println("------compareTo(E o)比較此枚舉與指定對象的順序。---");
System.out.println(p21.compareTo(p22));
System.out.println("-------name 返回此枚舉常量的名稱--------");
// String name()
System.out.println(p21.name());
System.out.println(p22.name());
System.out.println("--------toString------");
// String toString()
System.out.println(p21.toString());
System.out.println(p22.toString());
System.out.println("-------valueOf迴帶指定名稱的指定枚舉類型的枚舉常量-------");
// <T> T valueOf(Class<T> type,String name)
People2 p223 = Enum.valueOf(People2.class, "woman");
System.out.println(p223.getName());
System.out.println("------values()----------");
// values()
//遍歷枚舉類的全部枚舉值
People2[] pirs = People2.values();
for (People2 p224 : pirs) {
System.out.println(p224+"--------"+p224.getName());
}
}
}
輸出:
------People-------
woman
------People2-------
woman
女
------People3-------
woman
女
女
-----People3-switch--------
woman
woman
------ordinal 返回枚舉常量的序數(它在枚舉聲明中的位置,其中初始常量序數爲零--------
0
1
------compareTo(E o)比較此枚舉與指定對象的順序。---
-1
-------name 返回此枚舉常量的名稱--------
woman
man
--------toString------
woman
man
-------valueOf迴帶指定名稱的指定枚舉類型的枚舉常量-------
女
------values()----------
woman--------女
man--------男