欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java枚举学习入门

程序员文章站 2022-07-05 10:12:57
一、前言 在java编程过程中,我们通常需要定义一些固定数量的常量,在jdk1.5以前,通常的做法是定义一个静态常量类,但自jdk1.5后,java引入了枚举(关键字enum,全称为 enumeration,值类型),在枚举中,我们可以把相关的常量分组到一个枚举类型里,枚举也比常量类有更多灵活的用法 ......

一、前言 
  在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 }