枚举的作用:通过定义类来限制一定范围的值。 |
1 . 简单的枚举 |
在JDK1. 5 之前可以通过以下代码来完成。 |
class Grade { |
private Grade(){} //必须把构造函数设为私有的 |
|
//创建static final的本类对象,用于限定范围 |
public static final Grade A = new Grade(); |
public static final Grade B = new Grade(); |
public static final Grade C = new Grade(); |
public static final Grade D = new Grade(); |
public static final Grade E = new Grade(); |
|
} |
在JDK1. 5 之后,通过枚举来实现。枚举的关键字是 enum 。以上代码可用枚举实现如下: |
enum Grade { |
A,B,C,D,E; |
} |
大大简化了代码的书写。 |
2 . 带有参数的构造函数的枚举,用于封装更多的信息。 |
//Grade分级,A(100~90)、B(89~80)、C(79~70)、D(69~60)、E(59~0) |
enum Grade { |
A( "100~90" ),B( "89~80" ),C( "79~70" ),D( "69~60" ),E( "59~0" ); |
|
private String value; // 定义私有变量value |
// 定义有参的构造函数,可以封装更多的信息 |
private Grade(String value) { |
this .value = value; |
} |
// 定义公共方法,用于获取value |
public String getValue() { |
return this .value; |
} |
} |
3 . 带抽象的枚举 |
enum Grade { |
// 初始化对象时要覆写抽象方法 |
A( "100~90" ){ |
public String localValue() { |
return "优" ; |
} |
}, |
B( "89~80" ){ |
public String localValue() { |
return "良" ; |
} |
}, |
C( "79~70" ){ |
public String localValue() { |
return "一般" ; |
} |
}, |
D( "69~60" ){ |
public String localValue() { |
return "差" ; |
} |
}, |
E( "59~0" ){ |
public String localValue() { |
return "不及格" ; |
} |
}; |
|
private String value; // 定义私有变量value |
// 定义有参的构造函数,可以封装更多的信息 |
private Grade(String value) { |
this .value = value; |
} |
// 定义公共方法,用于获取value |
public String getValue() { |
return this .value; |
} |
// 定义抽象方法 |
public abstract String localValue(); |
} |
注意:枚举中定义的A,B,C,D,E均是对象,不是属性。 |