JAVA学习之枚举
2015-09-22 11:07
507 查看
1、新建一个枚举类
通过查看字节码,可以看到,枚举类的实现方式:
1)继承自java.lang.Enum类。
2)构造类为private
3)枚举内的元素通过static域来引用
2、在枚举类中添加任意的方法和域。
在上面的类中:
1)添加了域color
2)创建了新的构造函数。
3)增加了新的方法。
3、在枚举中声明抽象方法,特定于常量的方法实现。
针对每个枚举值,分别定义不同的方法实现。
4、策略枚举
针对常量如果可以进行分类,则可以定义一个策略枚举,来减少样板代码
public enum Apple{ FUJI, PIPPIN, GRANNY_SMITH }
通过查看字节码,可以看到,枚举类的实现方式:
1)继承自java.lang.Enum类。
2)构造类为private
3)枚举内的元素通过static域来引用
2、在枚举类中添加任意的方法和域。
public enum Apple { FUJI("red"), PIPPIN("green"), GRANNY_SMITH("orange"); private String color; Apple(String color) { this.color = color; }
public String getColor() { return color; }
}
在上面的类中:
1)添加了域color
2)创建了新的构造函数。
3)增加了新的方法。
3、在枚举中声明抽象方法,特定于常量的方法实现。
public enum Operation { PLUS { @Override double apply(double x, double y) { return x+y; } }, MINUS { @Override double apply(double x, double y) { return x-y; } }, TIMES { @Override double apply(double x, double y) { return x*y; } }, DIVIDE { @Override double apply(double x, double y) { return x/y; } }; abstract double apply(double x,double y); }
针对每个枚举值,分别定义不同的方法实现。
4、策略枚举
public enum PayrollDay { MONDAY(PayType.WEEDAY), TUESDAY(PayType.WEEDAY), WEDNESDAY(PayType.WEEDAY), THURSDAY(PayType.WEEDAY), FRIDAY(PayType.WEEDAY), SATURDAY(PayType.WEEKEND), SUNDAY(PayType.WEEKEND); private final PayType payType; PayrollDay(PayType payType) { this.payType = payType; } double pay(double houresWorked, double payRate){ return payType.pay(houresWorked, payRate); } private enum PayType{ WEEDAY { @Override double overtimePay(double hrs, double payRate) { return hrs<=HOURS_PER_SHIFT ? 0 : (hrs - HOURS_PER_SHIFT) * payRate / 2; } }, WEEKEND { @Override double overtimePay(double hrs, double payRate) { return hrs * payRate / 2; } }; private static final int HOURS_PER_SHIFT=8; abstract double overtimePay(double hrs, double payRate); double pay(double hoursWorked, double payRate){ double basePay = hoursWorked * payRate; return basePay + overtimePay(hoursWorked,payRate); } } }
针对常量如果可以进行分类,则可以定义一个策略枚举,来减少样板代码
相关文章推荐
- JAVA常用jar包简介
- Java拿到工程的绝对路径相关问题-maven-resources-plugin
- POI读取excel文件通用代码(增强版--支持返回javaBean集合)---2003,2007
- Java POI 操作excel 无硬编码,反射,史上最牛
- java jsp+servlet实现登录网页设计
- java打开程序或文件
- Java操作Excel之理解JXL--读取Excel
- java 汉字转换英文小写工具类
- Java操作Excel之理解JXL--读取Excel模板动态写入数据并生成Excel
- Java中如何读写cookie
- spring-MVC配置问题
- mybatis整合spring配置
- JDK报错:Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
- [Ubuntu] install java
- Java中的copyOf()
- Mac下lombok无法安装到eclipse mars
- 项目____java.lang.IndexOutOfBoundsException异常
- java.lang.NullPointerException的问题与解决
- Spring MVC form handling example
- java knowledge record