一、Enum 枚举类
1、枚举类和普通类的区别:
- 使用 enum 定义的枚举类 默认继承了 java.lang.Enum 类。
- 枚举类的构造器只能使用 private 访问控制符。
- 枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾)。
- 列出的实例系统会自动添加 public static final 修饰。
2、注意
a、必须在枚举类的第一行声明枚举类对象。
b、JDK 1.5 中可以在 switch 表达式中使用Enum 定义的枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字, 无需添加枚举类作为限定。
二、枚举类的属性
枚举类对象的属性不应允许被改动, 所以应该使用private final修饰。
- 枚举类的使用 private final 修饰的属性应该在构造器中为其赋值。
- 若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数。
三、枚举类的主要方法:
1、values() 方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
2、valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常。
详细解说:
四、枚举实例
1、接口
package com.sixstar.chapter20.enums;
public interface Rgb {
public void pain();
}
2、枚举类
package com.sixstar.chapter20.enums;
/**
*
* @ClassName: Color
* @Description: 枚举类定义使用的是enum关键字
* @author 六星教育-Jame
* @date 2016年9月5日 下午8:34:09
*
*/
public enum Color implements Rgb{
/**
*规定好取值的范围。所有内容只能在指定的范围中。显示声明枚举值必须在第一行
*/
RED("红色"),
GREEN("绿色"),
BLUE("篮色");
//public static final Color YELLOW = new Color("黄色");
/**
* 枚举类的属性 必须是final类型 ,而且属性的声明不能放在显示声明的枚举第一行
*/
private final String name;
/*
* 枚举类的构造函数必须是private
*/
private Color(String name){
this.name= name;
}
public String getName() {
return name;
}
@Override
public void pain() {
// TODO Auto-generated method stub
}
}
3、调用类Test
package com.sixstar.chapter20.enums;
public class Test {
public static void main(String [] args){
//遍历枚举的类型
for(Color color : Color.values()){
doColorInfo(color);
}
//使用valueOf 通过枚举类变量名获取到实际的枚举类的实例
doColorInfo(Color.BLUE);
}
public static void doColorInfo(Color color){
switch(color){
case BLUE:
System.out.println("你选择的颜色是蓝色");
break;
case RED:
System.out.println("你选择的颜色是红色");
break;
case GREEN:
System.out.println("你选择的颜色是绿色");
break;
}
}
}
五、补充见解
1、 和普通 Java 类一样,枚举类可以实现一个或多个接口。
2、若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式, 则可以让每个枚举值分别来实现该方法。
3、在上面的代码例子中
RED("红色"),
GREEN("绿色"),
BLUE("篮色");
可以理解为是Color的三个实例对象,同时也可以理解为是Color的一个常量属性,调用的时候直接Color.RED;Color.BLUE;Color.GREEN;即可。