基础加强____JDK1.5高新特性之__【枚举】
2014-02-12 13:25
411 查看
JDK1.5版本出现的高级特性 Enumeration
枚举示例:
枚举 Enumeration "1.5新特性" 概念: 枚举就是要让某个类型的变量取值只能为若干个固定值中的一个,否则编译器就会报错。 枚举可以让编译器在编译时就可以控制程序中填写的非法值;而普通变量的方式在开发阶段无法实现这一目标。 WeekDay模拟枚举的步骤: 1,私有化构造方法 2,每个元素分别用一个公有的静态成员变量表示 3,可以有若干共有方法或抽象方法 定义enum枚举 枚举是一种特殊的类,每个元素都是该类的一个实例对象 枚举相当于一个类,其中可以定义构造方法、成员变量、普通方法和抽象方法。 枚举元素必须位于枚举体中最开始部分,枚举列表末尾要有";"与其他成员分隔。 枚举格式:枚举元素必须位于枚举最开始部分 带有构造方法的枚举(WeekDay) 构造方法必须为私有,如果有多个构造方法,调用由参数列表决定 枚举元素MON与MON()效果一样,都是调用默认的构造方法 带有抽象方法的枚举(TrafficLamp) 定义枚举列表 元素实现枚举中抽象方法nextLamp,每个元素都是枚举的子类生成的实例对象,以内部类的形式定义 从枚举中编程思想的提升 类的方法返回值类型可以是其本身 类中可以定义静态常量,该常量数据类型可以是该类的实例对象 枚举类 使用enum声明,默认直接继承了java.lang.Enum类,而不是Object类; 枚举类的对象是固定的,实例个数有限,不可以再new,枚举对象后可以跟()。 枚举元素必须位于枚举类体中的最开始部分,枚举元素后要有分号与其他成员分隔。 枚举类的构造方法的权限修饰符默认是private; 一旦枚举对象后面加上{},那么该对象实际是枚举匿名内部类对象; 所有枚举类都提供一个静态的values()方法(返回该枚举类所有对象组成的数组),便于遍历所有枚举对象; 所有枚举类都提供一个静态的valueOf(String name)方法, 返回枚举类中对象名等于 name的对象。 若枚举中只有一个成员,就可以作为一种"单例"的实现方式 枚举不可以new();即便是反射也不可以! 所以枚举型单例模式有着比普通单例有着更高的安全性 ======================================================================================
枚举示例:
package itheima.enhance; public class EnumeTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub WeekDay weekDay = WeekDay.SUN; System.out.println(weekDay.nextDay()); WeekDay1 weekDay2 = WeekDay1.FRI; System.out.println(weekDay2); System.out.println(weekDay2.ordinal());//在枚举中所处的位置 System.out.println(WeekDay1.valueOf("SUN").toString());//静态方法 System.out.println(WeekDay1.values().length);//静态方法:枚举数组长度 } public enum WeekDay1{ //定义带有构造方法的枚举 //1,元素列表必须放在最前,否则编译报错,枚举列表后面有操作的话要加上“;” //2,枚举的构造方法必须定义成私有,一般方法无此限制 SUN(1),MON,TUE,WED,THU,FRI,SAT;//元素是静态的,初始化时会调用构造方法(7次) private WeekDay1(){System.out.println("1");} private WeekDay1(int day){System.out.println("222");}//两个构造法方法,空/实参 } public enum TrafficLamp{ //带有抽象方法的枚举 RED(30){ public TrafficLamp nextLamp(){//实现抽象方法 return GREEN; } }, GREEN(40){ public TrafficLamp nextLamp(){ return YELLOW; } }, YELLOW(10){ public TrafficLamp nextLamp(){ return RED; } }; public abstract TrafficLamp nextLamp();//抽象方法 private int time; private TrafficLamp(int time){this.time=time;}//有参de构造方法 } }
相关文章推荐
- 黑马程序员--Java基础加强(2)-- JDK1.5新特性之可变参数,增强for,自动拆装箱,枚举
- 黑马程序员基础加强——JDK1.5的新特性: 自动拆箱和机制 枚举
- 黑马程序员 java基础加强——jdk1.5新特性—枚举
- Java基础加强: Jdk1.5新特性 枚举
- Java基础加强<一>_MyEclipse、JDK1.5新特性、枚举、反射
- Java 基础加强 - JDK1.5 新特性 - 枚举
- 基础加强____【JDK1.5高新特性……注解】
- 黑马程序员-基础加强-IDE&新特性&枚举-No.06
- java--加强之 jdk1.5简单新特性,枚举,注解
- 基础加强,JDK1.5新特性,反射,内省
- 黑马程序员-java基础加强-JDK1.5新特性注解
- java--加强之 jdk1.5简单新特性,枚举,注解
- 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
- Java基础加强和JDK1.5新特性1.0
- 黑马程序员---基础加强(Eclipse编译与运行环境、jdk1.5的新特性)
- 黑马程序员--Java基础加强(4)--- JDK1.5新特性之JavaBean、注解
- 黑马程序员_基础加强_JDK1.5新特性
- 黑马程序员---Java基础加强---JDK1.5新特性:泛型
- 黑马程序员-java基础加强-JDK1.5新特性-泛型
- Java基础加强_JDK1.5新特性