什么是枚举类型
枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。
而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。
简单的枚举类型定义
假如你希望创建一个颜色库,你可以这样定义枚举类型
enum Color {red, green, yellow, black};
然后你就可以使用它
1
2
3
4
5
6
7
8
|
Color T = Color.red; if (T == Color.red) System.out.println( "i am red" ); switch (T) { case red: System.out.println( "i am red" ); break } |
定制枚举类型
在C/C++中,我们可以这样使用枚举变量
1
2
|
enum color {red,green}; enum color a = 1; // a is green |
在Java中定义枚举类型的值
1
2
3
4
5
6
7
8
9
10
|
enum color { red( 1 ),green( 2 ); private final int number; color( int i) { this .number = i; } public getValue() { return this .number; } } |
然后使用 T.getValue() 便可获取绑定的值
重写枚举的方法
枚举类给我们提供的方法有,具体可以查看Enum.java
1
2
3
|
name, toString, valueOf //获取名字 equals //比较 ordinal //获取位置 |
实现接口
所有的枚举都继承自java.lang.Enum类。
由于Java 不支持多继承,所以枚举对象不能再继承其他类,但是可以实现接口
Test
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
enum number { zero( 0 ),one( 1 ),two( 2 ); int n; number( int i) { this .n = i; } public int getValue(){ return this .n; } } interface People_State { String getState(); State_Enum ChangeState(); } enum State_Enum implements People_State { normal( "正常" ), stop( "停止" ); private final String state; State_Enum(String s) { this .state = s; } public String toString() { return state; } @Override public String getState() { return state; } @Override public State_Enum ChangeState() { if ( this == normal) return stop; else return normal; } } public class Test_Enum { public static void main(String[] args) { number z = number.zero; State_Enum state = State_Enum.normal; System.out.println(z.getValue()); System.out.println(z); System.out.println(number.one); switch (z) { case zero: System.out.println( 0 ); break ; case one: System.out.println( 1 ); break ; case two: System.out.println( "2" ); break ; } //equals if (z.equals(number.one)) { System.out.println( "equal!" ); } else { System.out.println( "unequal" ); } //valueOf System.out.println(number.valueOf( "zero" )); //ordinal System.out.println(z.ordinal()); //the index of values System.out.println(state.toString()); state = state.ChangeState(); System.out.println(state.getState()); } } |
Output
1
2
3
4
5
6
7
8
9
|
0 zero one 0 unequal zero 0 正常 停止 |
总结
以上就是本文关于java编程枚举类型定义和重写枚举的方法的全部内容,希望对大家有所帮助。有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!
原文链接:https://www.2cto.com/kf/201710/691685.html