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

------- 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培训、期待与您交流! ----------

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值