Java中的枚举类
- 励志语录
- 枚举类介绍
- 自定义枚举类
- 用enum关键字定义枚举类
- 枚举类的方法
- 枚举类实现接口
励志语录
永不言败,是成功者的最佳品格。
枚举类介绍
什么是枚举类?可以认为如果一个类的对象是有限可数的时,那么我们就称这种类为枚举类
自定义枚举类
根据之前学到的知识,我们可以推得枚举类应该有一下几个特点:
- 构造器用
修饰private
- 在类中创建有限个该类的对象
- 该类对象用
与final
修饰static
- 该类中对象的属性应为
final
- 提供实例变量的get方法
代码示例:
class Session{
private final String sessionName;
private Session(String sessionName){
this.sessionName = sessionName;
}
public final static Session STRING = new Session("春天");
public final static Session SUMMER = new Session("夏天");
public final static Session AUTUNM = new Session("秋天");
public final static Session WINNER = new Session("冬天");
public String getSessionName() {
return sessionName;
}
}
用enum关键字定义枚举类
JDK5.0发布了enum关键字,大大减少了枚举类的代码量
与上面相同意义的代码(用enum):
enum Session{
SPRING("春天"),SUMMER("夏天"),AUTUNM("秋天"),WINTER("冬天");
private final String sessionName;
private Session(String sessionName){
this.sessionName = sessionName;
}
public String getSessionName() {
return sessionName;
}
}
不过有几个需要注意的点:
- 该类中的对象实例依次列出用逗号分隔;
- 对象实例列出必须在第一行
- 该类默认继承java.lang.Enum,因此不能继承其他类
枚举类的方法
- values():该方法返回一个对象数组,对象数组中封装着枚举类中所有的对象
- valueOf(String str):该方法可以根据对象名,返回对象,如果对象名不存在,会运行时异常:IllegalArgumentException。(对象名严格遵守大小写)
枚举类实现接口
当枚举类实现一个接口后,除了枚举类可以重写接口中的抽象方法外,每一个示例也可以重写接口中的抽象方法
代码示例:
interface MyInterface{
void show();
}
enum Session1 implements MyInterface{
SPRING("春天"){
@Override
public void show(){
System.out.println("我是春天");
}
},SUMMER("夏天"){
@Override
public void show(){
System.out.println("我是夏天");
}
},AUTUNM("秋天"){
@Override
public void show(){
System.out.println("我是秋天");
}
},WINTER("冬天"){
@Override
public void show(){
System.out.println("我是冬天");
}
};
private final String sessionName;
private Session1(String sessionName){
this.sessionName = sessionName;
}
public String getSessionName() {
return sessionName;
}
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("我是季节");
}
}