枚举类型
类的实例个数是有限的,但又不是很多。枚举像一个类,又像一个数组。使用Enum声明的枚举,反编译后发现是final修饰的class,所以他不可以有子类
1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。
2.所有枚举值都是public , static , final的。
3.枚举类型写法举例
写法一:
public enum SeasonEnum {
// 3.如何得到这个类的实例?实例个数设置为类的常量
SPRING("春天", "spring"),
SUMMER("夏天", "summer"),
FAIL("秋天", "autumn"),
WINTER("东天","winter");//注意逗号和分号
// 2.属性(季节名,季节序号),类的实例不允许修改,实例的属性也不允许修改
private final String chName;
private final String enName;
// 1.私有化构造方法
private SeasonEnum(String chName, String enName) {
this.chName = chName;
this.enName = enName;
}
// 4.需要get,set方法么?不需要set,需要get
public String getChName() {
return chName;
}
public String getEnName() {
return enName;
}
public static void main(String[] args){
SeasonEnum[] seArr = SeasonEnum. values();
for(SeasonEnum se:seArr){
System.out.println(se);
}
System.out.println(SeasonEnum. valueOf("SPRING"));
}
}
写法二:
public enum Color {
RED, GREEN, BLANK, YELLOW
}
4.枚举类型提供2个方法
Enum提供了values方法,这个方法使你能够方便的遍历所有的枚举值。
Enum提供了valueOf方法
5.开发过程中枚举类型使用举例
再枚举类型中写静态代码块,写一个get方法,使传入一个参数的时候,能返回这个参数对应的值
public String getEnNameByChName(String chName) {
return statesMap.get(chName);
}
public static final Map<String,String> statesMap = new HashMap<String,String>();
static {
SeasonEnum[] seArr = SeasonEnum.values();
for(SeasonEnum se:seArr){
statesMap.put(se.getChName(), se.getChName());
}
}