jdk5新特性总汇
- 自动拆箱装箱
- 泛型
- 可变参数
- 静态导入
- 增强for循环
- 互斥锁
- 枚举
枚举的概述
是指将变量的值一 一列出来,变量的值只限于枚举出来的值的范围。
回想单例设计模式
单例类是一个类只能有一个实例,那么多例类就是一个类可以有多个实例,但不是无限个数的实例,而是有个数限制,这就是枚举类
ps:枚举类可以自己实现,也可以通过enum实现枚举类
枚举的注意事项
1、定义枚举类需要用关键字enum
2、所有枚举类都是Enum的子类
3、枚举的第一行上必须是枚举项,也就是案例中的MON等,最后一个枚举项的分号是可以省略的,如果有其他东西就不要省略,建议不省略
4、枚举类可以有抽象方法,但是枚举项必须重写该方法
5、枚举类可以有构造器,但是必须是private的
6、枚举可以在switch中使用
枚举类的常见方法:
- .ordinal
返回枚举常量的序数(也就是在枚举声明中的位置,从0开始)
- .compareTo(传入枚举项)
把两个枚举项进行比较,比较的是编号,也就是叙述
- .name
获取实例名称
- .valueOf(枚举字节码,枚举项名称)
通过枚举类的字节码文件与枚举项名称获取枚举项的实例
- .values
获取所有枚举项,返回一个数组
自己实现枚举类案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public abstract class Week3 {
public static final Week3 MON = new Week3("星期一") { public void show() { System.out.println("星期一"); } }; public static final Week3 TUE = new Week3("星期二"){ public void show() { System.out.println("星期二"); } }; public static final Week3 WED = new Week3("星期三"){ public void show() { System.out.println("星期三"); } };
private String name; private Week3(String name){ this.name = name; }
public String getName() { return name; }
public abstract void show(); }
|
通过enum来实现枚举
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public enum Week3 { MON("星期一"){ public void show() { System.out.println("星期一"); } },TUE("星期二"){ public void show() { System.out.println("星期二"); } },WED("星期三"){ public void show() { System.out.println("星期三"); } }; private String name; private Week3(String name) { this.name = name; } public String getName() { return name; } public abstract void show(); }
|