黑马程序员_枚举
来源:互联网 发布:软件历史版本下载 编辑:程序博客网 时间:2024/06/07 02:57
------- 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培训、期待与您交流! ----------
0 0
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 黑马程序员_枚举
- 乐讯社区论坛刷回复账号升级工具软件
- wifidog认证流程图
- 网络编程中常用的地址结构与转换(IPV4/IPv6)
- <<Oracle Applications DBA 基础(第二期)>>Week 03 exercise
- tomcat发布的问题
- 黑马程序员_枚举
- E - Hangover(1.4.1)
- Js中的window.parent ,window.top,window.self 详解
- BCM SIP ALG原理及实现(应用层实现机制)
- <<Oracle Applications DBA 基础(第二期)>>Week 04 exercise
- 互联网的一些事----用户体验
- git-即时笔记
- 最近点问题
- 数学 之 Codeforces 359D - Pair of Numbers