您的位置:首页 > 编程语言 > Java开发

黑马程序员—JDK1.5新特性之枚举enum

2013-09-29 14:59 435 查看
------- android培训java培训、期待与您交流! ----------

JDK1.5之后,引入了一个新的关键字类型 enum,称为枚举类型

使用格式如下

public enum 枚举类型名称{

枚举对象1,枚举对象2,...,枚举对象n;

}

在JDK 1.5之前,JAVA可以有两种方式定义新类型:类和接口。对于大部分面向对象编程来说,这两种方法看起来似乎足够了。但是如果想要定义几个有一定范围的值,用enum比较方便也非常简单
比如在设计多例设计模式,用枚举与否的区别
普通实现范例
class Weekday {
private static final Weekday SUN = new Weekday("星期天") ;//创建多个实例
private static final Weekday MON = new Weekday("星期一") ;
private String title ;
private Weekday(String title) {//私有构造方法
this.title = title ;
}
public String toString() {//重写toString
return this.title ;
}
public static Weekday getInstance(int ch) {//获取实例
switch(ch) {
case 0 :
return SUN ;
case 1 :
return MON ;
default :
return null ;
}
}
}
public class EnumTest {
public static void main(String[] args){
Weekday d = Weekday.getInstance(0) ;
System.out.println(d);
}
}


输出结果
星期天

使用枚举enum实现范例
enum Weekday {
SUN,MON ;//定义枚举变量
}
public class EnumTest {
public static void main(String[] args){
Weekday d = Weekday.SUN ;//获取Weekday实例
System.out.println(d);
}
}


输出结果
SUN

通过对比,很明显,利用枚举来实现的多例说呢及模式会更加简单明了
但实际上用enum来定义的类实际上继承了Enum类
而Enum类的定义
public abstract class Enum<E extends Enum<E>>
extends Object
implements Comparable<E>, Serializable


而枚举类在继承Enum后比较的父类方法有:
public final int ordinal():取得枚举的序号
public finally String name():取得枚举的名称
范例enum Weekday {

SUN,MON ;//定义枚举实例

}

public class EnumTest {

public static void main(String[] args){

Weekday d = Weekday.SUN ;//获取Weekday实例

for(Weekday w:Weekday.values()){//取得所有实例,用增强for输出

System.out.println("序号-" + w.ordinal() + "-名称是--->" + w.name());

}

}

}

输出结果
序号-0-名称是--->SUN

序号-1-名称是--->MON

枚举跟其他类的同样也包括了定义属性,方法,构造方法,但是构造方法必须要私有化,而且还可以定义抽象方法
范例

enum Weekday {
SUN("星期天"){//枚举对象实例化并实现抽象方法
public String getDay(){
return this.day;
};
},MON("星期一"){
public String getDay(){
return this.day;
};
} ;//定义枚举实例
String day;
private Weekday(String day){
this.day = day;
}
public String toString(){
return this.day; //重写toString方法
}
public abstract String getDay();//定义抽象方法

}
public class EnumTest {
public static void main(String[] args){
Weekday d = Weekday.SUN ;//获取Weekday实例
for(Weekday w:Weekday.values()){//取得所有实例,用增强for输出
System.out.println("序号-" + w.ordinal() + "-名称是--->" + w);
}
}
}

输出结果

序号-0-名称是--->星期天

序号-1-名称是--->星期一

序号-0-名称是--->星期天

序号-1-名称是--->星期一

序号-0-名称是--->星期天

序号-1-名称是--->星期一

------- android培训java培训、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐