----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
为什么要有枚举
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译
器就会报错。枚举可以让编译器的编译时就可以控制源程序中填写的非法值,普遍变量的方式
在开发阶段无法实现这一目标。
枚举是JDK1.5新增加的一个新特性。
视频中提到在c语言中,臃肿的东西已经被排除掉了,但是由于后来的用户与功能的需要,
于是加上了某些必须加上的东西。比如:枚举。package cn.itcast.day1;
import java.util.Date;
public class EnumTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
WeekDay1 weekDay = WeekDay1.MON;//视频这个地方定义了一个新的规定,
//星期天需要0表示。而且定义了新的类型。
System.out.println(weekDay.nextDay());
WeekDay weekDay2 = WeekDay.FRI;
System.out.println(weekDay2);
System.out.println(weekDay2.name());
System.out.println(weekDay2.ordinal());
System.out.println(WeekDay.valueOf("SUN").toString());
System.out.println(WeekDay.values().length);
new Date(300){};
}
public enum WeekDay{
SUN(1),MON(),TUE,WED,THI,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;}
}
}
枚举就类似于c语言中的程序员自己定义的一个有范围的变量数组,可以调用。
可以赋值,因为这个数组中的所以的值都是变量。
package cn.itcast.day1;
public abstract class WeekDay1 { //这个地方产生了一个实例对象。
private WeekDay1(){} //这个地方的构造方法要搞成私有的。
public final static WeekDay1 SUN = new WeekDay1(){ //这个地方定以了一个静态的常量,其中,static和WeekDay1谁前都可以。
//这个地方可以写七个方法。为了方便定义了两个!
@Override
public WeekDay1 nextDay() { //赋值的时候只能调用WeekDay中的。
// TODO Auto-generated method stub
return MON;
}
};
public final static WeekDay1 MON = new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return SUN;
}
};
public abstract WeekDay1 nextDay();
/* public WeekDay nextDay(){
if(this == SUN){
return MON;
}else{
return SUN;
}
}
*/
public String toString(){
return this==SUN?"SUN":"MON";
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------