黑马程序员——枚举
来源:互联网 发布:美工师 编辑:程序博客网 时间:2024/04/28 12:22
---------------------- android培训、java培训、期待与您交流! ----------------------
枚举
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。
例1:
public class EnumExer {
public static void main(String[] args) {
WeekDay weekday=WeekDay.sunday;
System.out.println(weekday.nextDay());
}
}
public abstract class WeekDay {
private WeekDay() {} // 私有的构造方法禁止其它类调用
// 定义对象类型为WeekDay的静态常量(final是不可改变的值)。
final static WeekDay sunday = new WeekDay();
final static WeekDay monday = new WeekDay();
final static WeekDay tuesday = new WeekDay();
final static WeekDay wednesday = new WeekDay();
final static WeekDay thursday = new WeekDay();
final static WeekDay friday = new WeekDay();
final static WeekDay saturday = new WeekDay();
//调用方法返回后一天对象,this表示当前对象
public WeekDay nextDay(){
if(this==sunday) return monday;
else if(this==monday) return tuesday;
else if(this==tuesday) return wednesday;
else if(this==wednesday) return thursday;
else if(this==thursday) return friday;
else if(this==friday) return saturday;
else return sunday;
}
//重写toString方法,输出字符串
public String toString() {
if (this == sunday) return "sunday";
else if (this == monday) return "monday";
else if (this == tuesday) return "tuesday";
else if (this == wednesday) return "wednesday";
else if (this == thursday) return "thursday";
else if (this == friday) return "friday";
else return "saturday";
}
}
例2:
public abstract class WeekDay {
private WeekDay() {} // 私有的构造方法禁止其它类调用
//用子类创建实例对象,子类是内部类,子类没有名字称为匿名类
final static WeekDay sunday = new WeekDay(){
//重写父类方法nextDay();
public WeekDay nextDay() {
return monday;
}
};
final static WeekDay monday = new WeekDay(){
public WeekDay nextDay() {
return tuesday;
}
};
final static WeekDay tuesday = new WeekDay(){
public WeekDay nextDay() {
return wednesday;
}
};
final static WeekDay wednesday = new WeekDay(){
public WeekDay nextDay() {
return thursday;
}
};
final static WeekDay thursday = new WeekDay(){
public WeekDay nextDay() {
return friday;
}
};
final static WeekDay friday = new WeekDay(){
public WeekDay nextDay() {
return saturday;
}
};
final static WeekDay saturday = new WeekDay(){
public WeekDay nextDay() {
return sunday;
}
};
//采用抽象方法定义nextDay就将大量的if else语句转移成了一个个独立的类。
public abstract WeekDay nextDay();
//重写toString方法,输出字符串
public String toString() {
if (this == sunday) return "sunday";
else if (this == monday) return "monday";
else if (this == tuesday) return "tuesday";
else if (this == wednesday) return "wednesday";
else if (this == thursday) return "thursday";
else if (this == friday) return "friday";
else return "saturday";
}
}
枚举的基本应用
例3:
public class EnumTest {
public static void main(String[] args) {
WeekDay weekday=WeekDay.MON;//枚举类型对象
System.out.println(weekday);//自动重写toString方法
System.out.println(weekday.name());//对象的名字
System.out.println(weekday.ordinal());//对象排第几位
//枚举类的静态方法,通过字符串获取对象
//System.out.println(WeekDay.valueOf(字符串).toString());
System.out.println(WeekDay.values().length);
}
}
public enum WeekDay {
SUN, MON, TUE, WED, THU, FRI, SAT;// 枚举元素对象
}
枚举的构造函数
例4:
public enum WeekDay {
SUN(), MON(), TUE(9), WED, THU, FRI, SAT(0);
// 构造方法必须在枚举元素对象列表之后定义
private WeekDay() {
System.out.println("无参构造函数");
}
private WeekDay(int day) {
System.out.println("有参构造函数");
}
}
带有抽象方法的枚举
例5:
public enum TrafficLamp { //内部枚举类
RED(30){ //调用有参构造函数
public TrafficLamp nextLamp(){ //匿名子类实现抽象方法
return GREEN;
}
},
YELLOW(5){
public TrafficLamp nextLamp(){
return RED;
}
},
GREEN(30){
public TrafficLamp nextLamp(){
return YELLOW;
}
};
private int time;
private TrafficLamp(int time){//有参构造函数
this.time=time;
}
public abstract TrafficLamp nextLamp();
}
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima
- 黑马程序员—枚举
- “黑马程序员”——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员——枚举
- 黑马程序员—JAVA枚举
- 黑马程序员—枚举类
- 黑马程序员——JAVA(枚举)
- 黑马程序员——关于枚举
- 黑马程序员——高新技术(枚举)
- 黑马程序员——简单新特性
- RHEL5.5启动xdmcp
- php中require后的路径问题
- 4种在线程中操作UI的方法
- 你的心中有几个“偶像”
- 黑马程序员——枚举
- 使用TWebBrowser时存在内存泄漏问题的解决方案
- hdu 2986 Ballot evaluationp
- CUDA范例精解第6章
- 在WampServer Version 2.1(或更高版本)中切换不同版本的MySQL易遇到的问题及对策
- PS设计具有现代气息的web站点
- [IPhone]如何检查内存泄漏
- nginx第一章 安装
- C++重点知识 .