什么是枚举类型
枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。
而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。
简单的枚举类型定义
假如你希望创建一个颜色库,你可以这样定义枚举类型
enum Color {red, green, yellow, black};
然后你就可以使用它
java" id="highlighter_836635">
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