黑马程序员-枚举与其应用
来源:互联网 发布:柯蓝 知乎 编辑:程序博客网 时间:2024/06/10 22:11
---------------------- android培训、java培训、期待与您交流! ----------------------
为什么要有枚举?枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法制,普通变量的方式在开发阶段无法实现这一目标
例子:用普通类实现枚举功能,定义一个Weekday的类来模拟枚举功能
>私有的构造函数
>每个元素分别用一个公有的静态成员变量表示
>可以有若干个公有方法或抽象方法,例如,要提供的nextDay()方法必须是抽象的。
public enum WeekDay
{
SUN(1),MON,TUE,WED,THI,FRI,STA;
private WeekDay()//带有构造方法的枚举其构造方法必须用private修饰
{
System.out.println("first");
}
private WeekDay(int date)
{
System.out.println("second");
}
}
public abstract class WeekDay1 {
private WeekDay1(){}
public final static WeekDay1 SUN=new WeekDay1(){
@Override
public WeekDay1 nextDay() {
return MON;
}
};
public final static WeekDay1 MON=new WeekDay1(){
@Override
public WeekDay1 nextDay() {
return SUN;
}
};
public abstract WeekDay1 nextDay();//带有抽象方法的枚举
public String toString(){
return this==SUN?"SUN":"MON";
}
}
枚举就相当于一个类,其中也可以定义构造方法,成员变量,普通方法和抽象方法。
枚举元素必须位于枚举体中的最开始部分,枚举元素列表后要有分号与其他成员分隔,把枚举中的成员方法或变量等放在枚举元素的前面,编译器会报错。
带构造方法的枚举:构造方法必须私有。
带方法的枚举:实现朋普通的next方法,实现抽象的next方法(每个元素分别是由枚举的子类来生成的实力对象,这些子类采用类似内部类的方式进行定义)
当枚举只有一个成员时,就可以作为一种单例的实现方式。
例子:用普通类实现枚举功能,定义一个Weekday的类来模拟枚举功能
>私有的构造函数
>每个元素分别用一个公有的静态成员变量表示
>可以有若干个公有方法或抽象方法,例如,要提供的nextDay()方法必须是抽象的。
public enum WeekDay
{
SUN(1),MON,TUE,WED,THI,FRI,STA;
private WeekDay()//带有构造方法的枚举其构造方法必须用private修饰
{
System.out.println("first");
}
private WeekDay(int date)
{
System.out.println("second");
}
}
public abstract class WeekDay1 {
private WeekDay1(){}
public final static WeekDay1 SUN=new WeekDay1(){
@Override
public WeekDay1 nextDay() {
return MON;
}
};
public final static WeekDay1 MON=new WeekDay1(){
@Override
public WeekDay1 nextDay() {
return SUN;
}
};
public abstract WeekDay1 nextDay();//带有抽象方法的枚举
public String toString(){
return this==SUN?"SUN":"MON";
}
}
枚举就相当于一个类,其中也可以定义构造方法,成员变量,普通方法和抽象方法。
枚举元素必须位于枚举体中的最开始部分,枚举元素列表后要有分号与其他成员分隔,把枚举中的成员方法或变量等放在枚举元素的前面,编译器会报错。
带构造方法的枚举:构造方法必须私有。
带方法的枚举:实现朋普通的next方法,实现抽象的next方法(每个元素分别是由枚举的子类来生成的实力对象,这些子类采用类似内部类的方式进行定义)
当枚举只有一个成员时,就可以作为一种单例的实现方式。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima
- 黑马程序员-枚举与其应用
- 黑马程序员--枚举类型的基本应用
- 黑马程序员------java5的枚举(枚举的原理、枚举的应用)
- 黑马程序员-jdk1.5新特性--枚举的高级应用。
- 黑马程序员-java枚举实现原理及应用
- 黑马程序员学习_枚举学习与应用
- 《黑马程序员》枚举复习
- <黑马程序员>枚举
- 黑马程序员__java_枚举
- 黑马程序员_枚举
- 黑马程序员 枚举
- 黑马程序员之枚举
- 黑马程序员-java-枚举
- 黑马程序员-枚举
- 黑马程序员_Java枚举
- 黑马程序员---枚举
- 黑马程序员:枚举
- 黑马程序员_枚举
- LZ 发这帖时,正叼着4.5的红河,用刚撸过管的右手扣着脚丫子,嘴里发出满足的呻吟
- asp 增删改 拍卖后台
- BaseExpandableListAdapter的用法
- 腾讯面试题:tcp三次握手的过程,accept发生在三次握手哪个阶段?
- 线程池原理
- 黑马程序员-枚举与其应用
- 黑马程序员2012.6.26.03.45
- ubuntu12.04 gvim报错
- Interval Tree
- 黑马程序员-反射知识总结
- SQL Server 2005修改实例名的方法
- 如何选择sql server 2005的网络协议
- 分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月18日-6月24日)
- How to test a whiteboard? 如何测试一个白板