java枚举学习入门

一、前言 
  在java编程过程中,我们通常需要定义一些固定数量的常量,在jdk1.5以前,通常的做法是定义一个静态常量类,但自jdk1.5后,java引入了枚举(关键字enum,全称为 enumeration,值类型),在枚举中,我们可以把相关的常量分组到一个枚举类型里,枚举也比常量类有更多灵活的用法,使用枚举,可以有效的提高代码的整洁性、可读性、可维护性等等,这里简单总结一下常用的枚举用法。 可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不同之处是:enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承),但可以继承接口。总结如下一些使用的方法

用法一:常量用法

a.jdk 1.5之前定义常量的方法
1 public class DayDemo {
2 
3     public static final int MONDAY =1;
4 
5     public static final int TUESDAY=2;
6 
7     public static final int WEDNESDAY=3;
}
b.jdk 1.5之后定义常量的方法
1 //枚举类型,使用关键字enum
2 enum Day {
3     MONDAY, TUESDAY, WEDNESDAY
4 }

用法二:向枚举中添加新方法

 1 public enum Color {  
 2     RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
 3     // 成员变量  
 4     private String name;  
 5     private int index;  
 6     // 构造方法  
 7     private Color(String name, int index) {  
 8         this.name = name;  
 9         this.index = index;  
10     }  
11     // 普通方法  
12     public static String getName(int index) {  
13         for (Color c : Color.values()) {  
14             if (c.getIndex() == index) {  
15                 return c.name;  
16             }  
17         }  
18         return null;  
19     }  
20     // get set 方法  
21     public String getName() {  
22         return name;  
23     }  
24     public void setName(String name) {  
25         this.name = name;  
26     }  
27     public int getIndex() {  
28         return index;  
29     }  
30     public void setIndex(int index) {  
31         this.index = index;  
32     }  
33 }  

用法三:覆盖枚举的方法

 1 public enum Color {  
 2     RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);  
 3     // 成员变量  
 4     private String name;  
 5     private int index;  
 6     // 构造方法  
 7     private Color(String name, int index) {  
 8         this.name = name;  
 9         this.index = index;  
10     }  
11     //覆盖方法  
12     @Override  
13     public String toString() {  
14         return this.index+"_"+this.name;  
15     }  
16 }  

用法四:使用get、set方法获取值

 1 public enum DeleteAllDatasEnum {
 2 
 3     
 4     Role("Role","users,rolePerm",Role.class," where t.projectId !='402893bb50d6280d0150d62aa2e10000'");//角色(测试ok)
 5     
 6     private String entityName;
 7     private String relations;
 8     private Class<?> entityClass;
 9     private String sql;
10     
11 
12     private DeleteAllDatasEnum(String entityName, String relations,
13             Class<?> entityClass, String sql) {
14         this.entityName = entityName;
15         this.relations = relations;
16         this.entityClass = entityClass;
17         this.sql = sql;
18     }
19 
20     public String getSql() {
21         return sql;
22     }
23 
24     public void setSql(String sql) {
25         this.sql = sql;
26     }
27 
28     public String getEntityName() {
29         return entityName;
30     }
31     public void setEntityName(String entityName) {
32         this.entityName = entityName;
33     }
34     public String getRelations() {
35         return relations;
36     }
37     public void setRelations(String relations) {
38         this.relations = relations;
39     }
40     public Class<?> getEntityClass() {
41         return entityClass;
42     }
43     public void setEntityClass(Class<?> entityClass) {
44         this.entityClass = entityClass;
45     }
46     
47 }

猜你喜欢

转载自www.cnblogs.com/zhanghongjie/p/9239775.html