Java枚举类回顾

来源:互联网 发布:淘宝矜贵芳旗舰店 编辑:程序博客网 时间:2024/05/22 10:30

整理一些枚举类的笔记。。。

枚举类:

  • 包含有限个成员对象而且默认被private static final修饰
  • 私有构造方法
  • 属性和字段private final修饰

比较

在JDK1.5之后引入了枚举类关键字enum,使得枚举类的创建变得更加简单明了,下面以一个例子说明

自定义枚举类

package Enum;/** * 枚举类理解 * @author hp * */public class MySeason {    // 1. 提供类的属性声明为private final    private final String name;    private final String desc;    // 2. 声明私有构造器,初始化final参数    private MySeason(String name,String desc){        this.name=name;        this.desc=desc;    }    // 3. 通过公共方法得到属性    public String getName() {        return name;    }    public String getDesc() {        return desc;    }    // 4. 创建枚举类对象private static final修饰    private static final MySeason SPRING = new MySeason("spring", "spring is warm!");    private static final MySeason SUMMER = new MySeason("summer", "summer is hot!");    private static final MySeason AUTUMN = new MySeason("autumn", "autumn is cool!");    private static final MySeason WINTER = new MySeason("winter", "winter is cold!");    // 5. 可以有自己的方法    public void show(){        System.out.println("this is MySeason");    }    @Override    public String toString() {        return "MySeason [name=" + name + ", desc=" + desc + "]";    }    public static void main(String[] args) {        MySeason spring = MySeason.SPRING;         System.out.println(spring);        spring.show();    }}

enum关键字创建枚举类

枚举类不支持继承,但是可以实现接口

package Enum;/** * 枚举类理解 * @author hp * */interface Info2{    public void say(); }public enum MySeason2 implements Info2{    // 4. 创建枚举类对象private static final修饰    SPRING("spring", "spring is warm!"){        public void say(){            System.out.println("spring-say()...");        }    },    SUMMER("summer", "summer is hot!"){        public void say(){            System.out.println("summer-say()...");        }    },    AUTUMN("autumn", "autumn is cool!"){        public void say(){            System.out.println("autumn-say()...");        }    },    WINTER("winter", "winter is cold!"){        public void say(){            System.out.println("winter-say()...");        }    };    // 1. 提供类的属性声明为private final    private final String name;    private final String desc;    // 2. 声明私有构造器,初始化final参数    private MySeason2(String name,String desc){        this.name=name;        this.desc=desc;    }    // 3. 通过公共方法得到属性    public String getName() {        return name;    }    public String getDesc() {        return desc;    }    // 5. 可以有自己的方法    public void show(){        System.out.println("this is MySeason");    }    @Override    public String toString() {        return "MySeason [name=" + name + ", desc=" + desc + "]";    }    public void say(){      System.out.println("接口的公共实现方法...");    }    public static void main(String[] args) {        MySeason2 spring = MySeason2.SPRING;         System.out.println(spring);        spring.show();        /*         * 两个方法         */        // 1. 获得所有已的枚举类成员对象        MySeason2[] ms = MySeason2.values();        System.out.println(ms.length);        // 2. 根据枚举类成员对象名获得该对象,        //注意是枚举类内部成员名,在这里应该是SPRING而不是spring        System.out.println(MySeason2.valueOf("SPRING"));    }}

测试输出:

MySeason [name=spring, desc=spring is warm!]this is MySeason4MySeason [name=spring, desc=spring is warm!]
1 0
原创粉丝点击