EffectiveJava中关于枚举的漂亮代码

enum PayrollDay{
MONDAY(PayType.WEEKDAY),TUESDAY(PayType.WEEKDAY),
WEDNESDAY(PayType.WEEKDAY),THURSDAY(PayType.WEEKDAY),
FRIDAY(PayType.WEEKDAY),
SATURDAY(PayType.WEEKEND),SUNDAY(PayType.WEEKEND);
private final PayType payType;
PayrollDay(PayType payType){
	this.payType=payType;
}
double pay(double hours,double payRate){
	return payType.pay(hours,payRate);
}
	private enum PayType{
		WEEKDAY{
		double overtimePay(double hours,double payRate){
			return hours<HOUR_PER_SHIFT?0:(hours-HOUR_PER_SHIFT)*payRate/2;
			}
		},
		WEEKEND{
		double overtimePay(double hours,double payRate){
			return hours* payRate/2;
			}
		};
		abstract double overtimePay(double hours,double payRate);
		private static final int HOUR_PER_SHIFT=8;
		double pay(double hours,double payRate){
			double basePay=hours*payRate;
			return basePay+overtimePay(hours,payRate);
		}
	}
	
public static void main(String args[]){
	for(PayrollDay pa:values()){
	System.out.println(pa.pay(9,100));
	}
}
	
}

你可能感兴趣的:(枚举)