Java枚举

	java枚举是java引用数据类型中的一种,从JDK1.5开始才引入了枚举,为什么会出现枚举呢?正因为会经
常涉及到相关的操作,所以在开发中把这样具有鲜明特征的功能单独的抽象出来使用。那么具体是什么样特点呢?
即这个枚举中的实例是有限个数的,即无法继续扩展其实例的时候(如周几只有七个实例,性别只有两个实例等)
类似于这样的类,我们就可以设置出枚举(特别要注意的是,当只有一个类时,此时可以当做性能还不错的单例模
式,其线程安全问题在底层已经实现),我认为枚举更好的一种称呼是穷举,实例有限且固定接下来就简单进行一
些枚举类和方法的介绍:
//枚举类的定义格式,也是一个class,只是没写出来,其实为继承java.lang.enum
//java是单一继承,所以枚举不能再继承
public enum WeekDay{
	//在第一行代码中必须枚举出所有的实例
	MON,TUE,WED,THU,FRI,SAT,SUN;
	private WeekDay(){
	//默认的构造器,构造器必须是私有化的
	}
	MON.ordinal();//枚举实例的序数(0,1,2,3,4,5,6,7)
	MON.compareTo(WED);//等价于MON.ordinal-WED.ordinal=-2
	WeekDay.values();//返回存储WeekDay所有实例对象的数组,任何一个实例.values()其实都可取得
	MON.getDeclaringClass();//返回和当前枚举常量的枚举类型对应的calss对象
}

上面的代码因为是在本类中调用,所以直接使用了实例.方法(),而通常我们会在其他类中去掉用,就因该写为:WeekDay.MON;(可以用另外的变量去接收WeekDay mon = WeekDay.MON;),还有一种获取枚举的单个实例的方式是:WeekDay TUE = Enum.valueOf(WeekDay.class, “TUE”);

	还有一个值得注意的点是,枚举类是构造器是可以带参数的,只不过这个时候定义的实例同样要带实参!
如:	
	MON("星期一");
	privata String val;
	private WeekEnum(String val) {
		this.val = val;
	}

还有一个比较重要的作用也就是配合switch,一般来说switch中只能使用整数值,而枚举实例天生就具有整数次序(ordinal()的次序可以使用,显然编译器帮我们做了类似的工作),例子:

public enum OperationEnum {
	A,B,C,D; //ABCD代表加减乘除
	public static Double getResult(Double num1,Double num2,OperationEnum op) {
		Double result = 0D;
		switch(op) {
		case A: result = num1+num2;
			break;
		case B: result = num1-num2;
			break;
		case C: result = num1*num2;
			break;
		case D: result = num1/num2;
			break;
		}
		return result;
	}
	public static void main(String[] args) {
		System.out.println(OperationEnum.getResult(3d, 2d, D));
	}
}

感谢阅读,你的指正和建议是我进步的动力~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值