黑马程序员_枚举
2014-07-13 21:28
253 查看
------- android培训、java培训、期待与您交流!
----------
枚举的定义:
一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值。
此类问题在JDK 1.5 以前采用自定义带有枚举功能的类解决,Java 5.0以后可以直接使用枚举予以解决。
JDK 1.5 新增的Enum 关键字用于定义一个枚举类。
普通类模拟实现枚举功能:
1、私有构造方法;
2、每个元素分别用共有的静态成员变量表示;
3、可以自定义若干个公有方法或抽象方法。
例如:
例如:
Java5枚举的定义:
注意:最后一个枚举元素后面可以加分号,也可以不加分号。
代码测试:
1、枚举是一种特殊形式的Java类。
2、枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
3、枚举类与Java中的普通类一样,在声明枚举类时,也可以声明属性、方法、和构造函数。但枚举类的构造函数必须为私有。
4、枚举类也可以实现接口、或继承抽象类。
5、JDK 1.5 中扩展了switch语句,它除了可以接收int, byte, char, short,String外,还可以接收一个枚举类型。
6、若枚举类只有一个枚举值,则可以当作单例设计模式使用。
7、枚举类的实例变量是把所以的枚举实例都加载一次的。
8、如果调用某个枚举类,那么该枚举类会先把枚举类中的所有元素都加载一次。
------- android培训、java培训、期待与您交流!
----------
----------
枚举的定义:
一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值。
此类问题在JDK 1.5 以前采用自定义带有枚举功能的类解决,Java 5.0以后可以直接使用枚举予以解决。
JDK 1.5 新增的Enum 关键字用于定义一个枚举类。
普通类模拟实现枚举功能:
1、私有构造方法;
2、每个元素分别用共有的静态成员变量表示;
3、可以自定义若干个公有方法或抽象方法。
例如:
public class WeekDay { private WeekDay(){} public static final WeekDay SUN= new WeekDay(); public static final WeekDay MON= new WeekDay(); public WeekDay nextDay() { if (this == SUN) { return MON; }else { return SUN; } } public String toString() { return this == SUN ? "SUN" : "MON"; } }注意:可以采用抽象方法定义nextDay将大量的if...else语句转移到一个个独立的对象中实现。
例如:
public abstract class WeekDay { private WeekDay(){} public static final WeekDay SUN= new WeekDay(){ public WeekDay nextDay() { return MON; } }; public static final WeekDay MON= new WeekDay(){ public WeekDay nextDay() { return SUN; } }; public abstract WeekDay nextDay(); public String toString() { return this == SUN ? "SUN" : "MON"; } }测试代码:
public class EnumTest { public static void main(String[] args) { WeekDay weekday = WeekDay.MON ; System.out.println(weekday.nextDay()); } }
Java5枚举的定义:
public enum WeekDay { SUN,MON,TUE,WED,TUR,FRI,SAT; }
注意:最后一个枚举元素后面可以加分号,也可以不加分号。
代码测试:
public class WeekDayTest { public static void main(String[] args) { WeekDay weekDay = WeekDay.SUN; for (WeekDay weekDay1 : weekDay.values()) { System.out.println("第一个是:"+weekDay1.ordinal()+" 星期:"+weekDay1.name()); } WeekDay weekday = WeekDay.valueOf("SUN"); System.out.println(weekday); int length = WeekDay.values().length; System.out.println(length); } }实现带有构造方法的枚举:
public enum WeekDay { SUN(1),MON,TUE,WED,TUR,FRI,SAT ;//元素列表必须位于所有的成分之前,元素后加指定参数列表指明调用第二个方法 private WeekDay() { System.out.println("first"); } private WeekDay(int day) { System.out.println("second"); } }实现带有抽象方法的枚举:
public enum TrafficLamp { RED(30){ public TrafficLamp nextLamp(){ return GREEN; } }, GREEN(45){ public TrafficLamp nextLamp(){ return YELLOW; } }, YELLOW(5){ public TrafficLamp nextLamp(){ return RED; } }; public abstract TrafficLamp nextLamp(); private int time; private TrafficLamp(int time){ this.time = time; } }枚举类的总结:
1、枚举是一种特殊形式的Java类。
2、枚举类中声明的每一个枚举值代表枚举类的一个实例对象。
3、枚举类与Java中的普通类一样,在声明枚举类时,也可以声明属性、方法、和构造函数。但枚举类的构造函数必须为私有。
4、枚举类也可以实现接口、或继承抽象类。
5、JDK 1.5 中扩展了switch语句,它除了可以接收int, byte, char, short,String外,还可以接收一个枚举类型。
6、若枚举类只有一个枚举值,则可以当作单例设计模式使用。
7、枚举类的实例变量是把所以的枚举实例都加载一次的。
8、如果调用某个枚举类,那么该枚举类会先把枚举类中的所有元素都加载一次。
------- android培训、java培训、期待与您交流!
----------
相关文章推荐
- 黑马程序员_高新技术枚举
- 黑马程序员--高新技术(枚举和反射)
- 黑马程序员—C语言—数组、字符串、结构体和枚举
- 黑马程序员_反射与枚举
- 黑马程序员_java基础知识(5)枚举的简单理解
- 黑马程序员__JAVA高新技术--枚举及内省JavaBean、可变参数等知识点总结
- 黑马程序员--Java基础加强--01.枚举常量被使用的时候的内存图
- 黑马程序员_枚举,结构,数组,方法
- 黑马程序员_高新技术1(高级for,静态导入,可变参数,自动装箱拆箱,枚举)
- 黑马程序员_程序的三种结构+枚举
- 黑马程序员__枚举__反射__内省
- 黑马程序员-枚举与其应用
- [黑马程序员]--枚举
- 黑马程序员: 基础加强之静态导入,可变参数,增强for,自动装箱,享元模式,枚举
- 黑马程序员-枚举
- 黑马程序员:枚举
- 黑马程序员_枚举
- 黑马程序员 -枚举
- 黑马程序员——枚举
- 黑马程序员-jdk1.5新特性---枚举