//枚举类 : 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--------男
posted on 2017-04-07 17:19  2637282556  阅读(103)  评论(0编辑  收藏  举报