TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
/**
* JDK1.5 枚举高级应用(向枚举值对象中添加变量和方法)
*
* @author 张明学
*
*/
public class EnumStudy {
public static void main(String[] args) {
WeekDay weekDay = WeekDay.SUN;
System.out.println("对象本身:" + weekDay);// 对象本身:SUN
System.out.println("枚举name方法" + weekDay.name());// 枚举name方法SUN
System.out.println("枚举ordinal方法:序号" + weekDay.ordinal());// 枚举ordinal方法:序号0
System.out.println("枚举toString方法" + weekDay.toString());// 枚举toString方法SUN
// valueOf()方法:将String转化成枚举对象
System.out.println(WeekDay.valueOf("FRI"));
// values()方法:返回所有的枚举值
System.out.println(WeekDay.values().length);
for (WeekDay wd : WeekDay.values()) {
System.out.println(wd);
}
// ************枚举高级应用************ \
System.out.println("----------------");
// 枚举的每个值都是一个对象,它们都有构造方法,我们可给它重构一些构造方法
// 每次第一个次使用枚举值时,它会为所有枚举值都实例化一次
System.out.println(WeekDay2.SUN);
System.out.println(WeekDay2.TUE);
System.out.println("----------------");
// 枚举的每个值都是一个对象,我们也可以为它们添加一些属性和方法
TranfficLamp lamp = TranfficLamp.GREEN;
// TranfficLamp枚举添加的特有的属性
System.out.println(lamp.time);
// TranfficLamp枚举添加的特有的方法
System.out.println(lamp.nextLamp());
}
// 普通的枚举
public enum WeekDay {
SUN, MON, TUE, WED, THI, FRI, SAT;
}
// 有多个构造方法的枚举
public enum WeekDay2 {
SUN(0), MON(1), TUE(), WED, THI, FRI, SAT;
// 所有的方法或其它必须放在枚举值的下面
// 枚举的构造方法必须是private的
private WeekDay2() {
System.out.println("调用第一个构造方法");
}
private WeekDay2(int day) {
System.out.println("调用第二个构造方法");
}
}
// 有抽象方法和属性的枚举
public enum TranfficLamp {
RED(30) {
public TranfficLamp nextLamp() {
return GREEN;
}
},
GREEN(45) {
public TranfficLamp nextLamp() {
return YELLOW;
}
},
YELLOW(5) {
public TranfficLamp nextLamp() {
return RED;
}
};
// 该枚举有一个抽象方法
public abstract TranfficLamp nextLamp();
// 该枚举有一个属性
public int time;
// 该枚举的构造方法必须要有一个int类型参数
private TranfficLamp(int time) {
this.time = time;
}
}
}[/code] 输出结果: 对象本身:SUN
枚举name方法SUN
枚举ordinal方法:序号0
枚举toString方法SUN
FRI
7
SUN
MON
TUE
WED
THI
FRI
SAT
----------------
调用第二个构造方法
调用第二个构造方法
调用第一个构造方法
调用第一个构造方法
调用第一个构造方法
调用第一个构造方法
调用第一个构造方法
SUN
TUE
----------------
45
YELLOW
[/code]
源码下载:http://file.javaxxz.com/2014/10/28/235555906.zip |
|