------- android培训、java培训、期待与您交流! ----------
枚举就是让某个类型的变量的取值只能为若干个固定值的一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值。普通变量的方式在开发阶段无法实现这一目标。
1.用普通类来模拟枚举类。
可以在普通类中定义共有的final静态成员。
package cn.itcast.day1;
public abstract class WeekDay1 {
private WeekDay1(){}
public final static WeekDay1 SUN = new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return MON;
}
};
public final static WeekDay1 MON = new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return TUE;
}
};
public final static WeekDay1 TUE = new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return WED;
}};
public final static WeekDay1 WED = new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return THU;
}};
public final static WeekDay1 THU = new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return FRI;
}};
public final static WeekDay1 FRI = new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return SAT;
}};
public final static WeekDay1 SAT = new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return SUN;
}};
public abstract WeekDay1 nextDay();
public String toString(){
if(this==SUN){
return "SUN";
}else if(this == MON){
return "MON";
}else if(this == TUE){
return "TUE";
}else if(this == WED){
return "WED";
}else if(this == THU){
return "THU";
}else if(this == FRI){
return "FRI";
}else{
return "MON";
}
}
}
2.定义枚举类
定义枚举使用的关键字是enum
System.out.println(weekDay);//toString()
枚举类提供了toString的方法。
枚举类有name()方法。打印也是枚举元素的名字。
枚举类又ordinal()方法,打印出该枚举元素的排位,第一个元素排位为0
枚举类有个静态方法ValueOf把一个字符串对应成对应的枚举元素。
枚举类有个静态方法Values,把所有枚举元素存入一个数组内。可以用来遍历该枚举类中元素。
****枚举类的构造方法必须在成员列表之后。也就是元素列表必须在最前面,且下面有内容的话 元素列表结尾要有分号。
构造方法要私有的。只要你用到了这个枚举类,他里面的静态变量都会被初始化。枚举类里元素等效于静态成员变量!!!
****带抽象方法的枚举类
内部类可以加上4个访问修饰符。外部类只有2个访问修饰符,Public和默认的。
public enum TrafficLamp{
RED(30) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}
},GREEN(45) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},YELLOW(5) {
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time = time;
}
}
}
如果枚举只有一个成员,就可以作为一个单例
-------android培训、java培训、期待与您交流! ----------详细请查看:http://edu.csdn.net