首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

黑马软件工程师-java高新技术02

2012-11-10 
黑马程序员-java高新技术02----------------------android培训、java培训、java学习型技术博客、期待与您交流

黑马程序员-java高新技术02

----------------------android培训、java培训、java学习型技术博客、期待与您交流!----------------------

?

??????? 枚举是jdk1.5中的另外一个重要的新特性,枚举可以避免在编译时程序中出现非法值,举个简单的例子,我们要定义表示星期几的变量,假设用1-7分别表示星期一道星期天,可有的人可能会用0表示星期天,这就造成程序在运行期间会出现一些不可预知的现象,而枚举就可以限定某个类型的变量只能为某些固定的值,否则编译器就会报错,而普通的变量的开发方式是无法做到这一点的。

??????? 下面就是一个代表一周七天的枚举类,这样在表示星期几的时候就只能用SUN, MON, TUE, WED, TRI, FRI, SAT;这些值的某一个,有效避免了程序在运行期间出现错误。

public enum WeekDay {SUN, MON, TUE, WED, TRI, FRI, SAT;}

??????

????? ? 枚举是一种特殊的类,其中的每一个元素都是该类的一个实例对象,在调用枚举类中的元素是时,就相当于调用了一个具体的实例对象,下面的代码可以说明这一点

public enum WeekDay {SUN(1), MON(), TUE, WED, TRI, FRI, SAT;//构造方法必须是私有的private WeekDay(){System.out.println("默认构造方法");}private WeekDay(int day) {System.out.println("有参构造方法");}}

??????

?????? ?枚举既然是一种特殊的类,当然也就可以在枚举类中定义构造方法,成员变量,成员方法和抽象方法,要注意的是枚举元素必须位于枚举体中的最开始部分,枚举列表的后面要用分号和其他的成员分开,否则编译器会报错,枚举类中的构造方法必须定义成私有的,上面的代码中,MON()和MON的效果是一样的,都是调用默认的构造方法。

?????? 下面的代码是一个带有抽象方法的模拟交通灯的枚举类

public enum TrafficLamp {RED(30) {@Overridepublic TrafficLamp nextLamp() {return GREEN;}}, GREEN(45) {@Overridepublic TrafficLamp nextLamp() {return YELLOW;}}, YELLOW(5) {@Overridepublic TrafficLamp nextLamp() {return RED;}};public abstract TrafficLamp nextLamp();private int time;private TrafficLamp(int time) {this.time = time;}}

???????? 其中的每个元素分别是由枚举类的子类来生成的子类对象,这些子类是采用类似内部类的方式定义的。???

???????? 此外,当枚举类只有一个成员时,可以做为一种单例的实现方式。

?

----------------------android培训、java培训、java学习型技术博客、期待与您交流!----------------------

?

详情请查看:http://edu.csdn.net/heima?

热点排行