黑马程序员—Java基础加强—(枚举)
来源:互联网 发布:linux中curl -L 编辑:程序博客网 时间:2024/05/21 03:54
----------android培训、java培训、期待与您交流!----------
1.枚举
枚举(Enum)是Java1.5新加入的一个数据类型,枚举就相当于一个类,与其他数据类型不同的是枚举可以自己定义常量.提高了安全性
在jdk1.6中 switch语句也支持枚举类型了
2.枚举的常用方法:
static
<T extends Enum<T>>
T
valueOf(Class<T> enumType,String name)
返回带指定名称的指定枚举类型的枚举常量。
String
name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。
int
ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
3.枚举的特点:
1:枚举列表必须写在最前面,否则编译出错
2:构造方法必须是私有的,并且可以在枚举列表中直接调用
3:枚举中的字段都是public static final特性,是枚举类本身的类型.每个字段之间有一个","号隔开,最后一个字段后面的","可以省略掉,整个字段的最后要有一个";"结束符号
4.枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象
5. 枚举中可以含有抽象方法,因为枚举本身就是抽象类.一旦枚举中含有抽象方法,那么在字段创建内部类的时候一定要实现该抽象方法.
枚举重也可以定义实现方法.比如枚举都要复写父类的toString()方法.
4.枚举的好处:
先看以下需求:定义一个类表示星期,有打印下一天,和当天等功能,用普通方法实现如下:
class ClassDemo { public static void main(String[] args) { WeekDay today = WeekDay.SAT; System.out.println(today+"的下一天是"+today.nextDay()); } } class WeekDay { //构造函数 private WeekDay(){} //创建星期的七个对象 public final static WeekDay SUN = new WeekDay(); public final static WeekDay MON = new WeekDay(); public final static WeekDay TUE = new WeekDay(); public final static WeekDay WED = new WeekDay(); public final static WeekDay THU = new WeekDay(); public final static WeekDay FN = new WeekDay(); public final static WeekDay SAT = new WeekDay(); //下一天的方法 public WeekDay nextDay() { if(this==SUN) return MON; else if(this==MON) return TUE; else if(this==TUE) return WED; else if(this==WED) return THU; else if(this==THU) return FN; else if(this==FN) return SAT; else return SUN; } //重写toString()方法 public String toString(){ if (this == SUN) return "星期日"; else if(this==MON) return "星期一"; else if(this==TUE) return "星期二"; else if(this==WED) return "星期三"; else if(this==THU) return "星期四"; else if(this==FN) return "星期五"; else return "星期六"; } }
以上需求若用枚举完成则可以改为:
public class EnumDemo{/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(EnumTest.WeekDay.MON.nextDay());}public enum WeekDay { //创建星期的七个对象 SUN, MON, TUE, WED, THU, FN, SAT ; //下一天的方法 public WeekDay nextDay() { if(this==SUN) return MON; else if(this==MON) return TUE; else if(this==TUE) return WED; else if(this==WED) return THU; else if(this==THU) return FN; else if(this==FN) return SAT; else return SUN; } //重写toString()方法 public String toString(){ if (this == SUN) return "星期日"; else if(this==MON) return "星期一"; else if(this==TUE) return "星期二"; else if(this==WED) return "星期三"; else if(this==THU) return "星期四"; else if(this==FN) return "星期五"; else return "星期六"; } }}
5:实现带有构造方法和抽象方法的枚举:
public class EnumTest {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(EnumTest.WeekDay.MON.nextDay().day);System.out.println(EnumTest.WeekDay.valueOf("SAT").day);} //创建枚举 public enum WeekDay { SUN{@Overridepublic WeekDay nextDay() {// TODO Auto-generated method stubreturn MON;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "星期天";}}, MON{@Overridepublic WeekDay nextDay() {// TODO Auto-generated method stubreturn TUE;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "星期一";}}, TUE{@Overridepublic WeekDay nextDay() {// TODO Auto-generated method stubreturn WED;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "星期二";}}, WED{@Overridepublic WeekDay nextDay() {// TODO Auto-generated method stubreturn THU;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "星期三";}}, THU {@Overridepublic WeekDay nextDay() {// TODO Auto-generated method stubreturn FN;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "星期四";}},FN{@Overridepublic WeekDay nextDay() {// TODO Auto-generated method stubreturn SAT;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "星期五";}},SAT(6){//使用带参数的构造函数WeekDay(int day)实例化@Overridepublic WeekDay nextDay() {// TODO Auto-generated method stubreturn SUN;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "星期六";}}; public int day; private WeekDay(){}; private WeekDay(int day){this.day=day;}; public abstract WeekDay nextDay();//创建抽象方法nextDay(),返回的对象是类的本身WeekDay。 public abstract String toString();//创建抽象方法toString(),返回的对象是String } }
- 黑马程序员—Java基础加强(枚举)
- 黑马程序员—Java基础加强—(枚举)
- 黑马程序员——java基础加强之枚举
- 黑马程序员-JAVA基础加强-枚举
- 黑马程序员 Java基础加强 枚举
- 【黑马程序员】java基础加强_枚举
- 黑马程序员—(基础加强JDK1.5)—枚举部分
- 黑马程序员基础加强---枚举
- 黑马程序员-基础加强-枚举
- 黑马程序员——java基础加强
- 黑马程序员——java基础加强
- 黑马程序员—java之基础加强
- 黑马程序员—Java基础加强(反射)
- 黑马程序员—Java基础加强(JavaBean)
- 黑马程序员 java基础加强——jdk1.5新特性—枚举
- 黑马程序员—Java基础加强学习笔记之枚举&反射
- 黑马程序员 — 基础加强
- <黑马程序员>枚举--(java基础加强1.5新特性)
- EL表达式详解
- Custom Sublime Text Build Systems For Popular Tools And Languages
- Java反射机制
- one or morebreakpoints cannot be set and have been disabled解决方案
- QT正则表达式---针对IP地址
- 黑马程序员—Java基础加强—(枚举)
- vim自动缩进
- IOS图片拉伸的几种方法
- 【读书笔记】usOS-II学习笔记(2008-10-31)
- Linux常用到的命令
- Sublime Text 2 插件:PlainTasks
- 敏捷团队的组织与管理--- MPD软件工作坊培训感想(下)
- 选项卡在左侧的TabHost
- SecureCRT 配置