//枚举类 : 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();
}
测试:
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--------男