---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
枚举:
枚举就是让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译就会报错
利用普通类来模拟枚举:
WeekDay类:
public abstract class WeekDay {
public static final WeekDay MON = new WeekDay() {
@Override
public WeekDay nextday() {
// TODO Auto-generated method stub
return SUN;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "MON";
}
};
public static final WeekDay SUN = new WeekDay() {
@Override
public WeekDay nextday() {
// TODO Auto-generated method stub
return MON;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "SUN";
}
};
public abstract WeekDay nextday();
public abstract String toString();
}
WeekDayTest 类:
public class WeekDayTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WeekDay day = WeekDay.MON;
System.out.println(day.nextday());
}
}
定义一个枚举类:
package EnumDemo;
public class EnumTest {
// TODO Auto-generated method stub
public enum WeekDay {
MON, THU, WED, THI, FRI, SAT, SUN
}
/**
* @param args
*/
public static void main(String[] args) {
WeekDay day = WeekDay.MON;
System.out.println(day);
System.out.println(day.name());
System.out.println(day.ordinal());// 排行
System.out.println(day.valueOf("SUN"));// 将字符串转换成对象
System.out.println(WeekDay.values().length);// 枚举类的长度
}
}
输出:
实现带有构造方法的枚举类:
public enum WeekDay {
MON, THU, WED, THI, FRI, SAT, SUN(1);// 注意此处,改行代码必须放到最前面,若后面还有内容,最后加个分号
private WeekDay() {
System.out.println("first");
}
private WeekDay(int a) {
System.out.println("second");
}
}
执行结果:
也就是说,前面六个调用无参构造函数,最后一个调用有参构造函数
定义带有抽象方法的枚举:
TrafficLamp类
public class TrafficLamp {
public enum Lamp {
RED(30) {
public Lamp nextlamp() {
return GREEN;
}
},
GREEN(45) {
public Lamp nextlamp() {
return YELLOW;
}
},
YELLOW(5) {
public Lamp nextlamp() {
return RED;
}
};
public abstract Lamp nextlamp();
private int time;
private Lamp(int time) {
this.time = time;
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Lamp lamp = Lamp.GREEN;
System.out.println(lamp.nextlamp());
}
}
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------