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));
}
}
}
EffectiveJava中关于枚举的漂亮代码
最新推荐文章于 2024-11-12 10:04:59 发布
本文展示了一个使用Java枚举实现薪资计算的例子。通过定义工作日类型及其加班费计算方式,实现了不同工作日薪资的不同计算逻辑。代码示例中包含了工作日枚举类的定义、加班费计算方法及主函数调用。
171

被折叠的 条评论
为什么被折叠?



