enum类型的基本使用
我们下面就来看Java中的enum枚举类型:
1、可以在enum中添加变量和方法
先来看一段代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
public enum State { Normal( "正常态" , 1 ), Update( "已更新" , 2 ), Deleted( "已删除" , 3 ), Fired( "已屏蔽" , 4 ); // 成员变量 private String name; private int index; // 构造方法,注意:构造方法不能为public,因为enum并不可以被实例化 private State(String name, int index) { this .name = name; this .index = index; } // 普通方法 public static String getName( int index) { for (State c : State .values()) { if (c.getIndex() == index) { return c.name; } } return null ; } // get set 方法 public String getName() { return name; } public void setName(String name) { this .name = name; } public int getIndex() { return index; } public void setIndex( int index) { this .index = index; } } |
从上面的代码中我们可以看到,定义完枚举值,然后在其后面加上分号,接着就可以定义其他的变量、方法了。另外需要特别说明的是,enum中的构造方法不可以用public标识,这样做是为了防止用户实例化enum。
2、可以用来定义常量
先来回顾一下Java中如何定义常量吧,看下面一段代码:
1
2
|
public static final int normalState = 1 ; private static final int updateState = 2 ; |
下面我们还可以用enum枚举来代替上面的常量定义,代码如下:
1
2
3
|
public enum State { Normal, Update, Deleted, Fired } |
在Java中用enum来定义常量在语法上没有什么优势,但是enum枚举类型可以提供更多的操作功能。
3、在enum中实现接口
先来看下面一段代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public interface ICanReadState { void read(); String getState(); } public enum State implements ICanReadState { Normal( "正常态" , 1 ), Update( "已更新" , 2 ), Deleted( "已删除" , 3 ), Fired( "已屏蔽" , 4 ); private String name; private int index; private State(String name, int index) { this .name = name; this .index = index; } // 接口方法1 @Override public String getState() { return this .name; } // 接口方法2 @Override public void read() { System.out.println( this .index + ":" + this .name); } } |