枚举:枚举最早的雏(在java5.0前没有引入枚举)是在类里用final来定义常量类(将类自身的构造函数全部私有,然后对外提供常量类的调用),例如:
class EnumDemo{
public fianl static EnumDemo A= new EnumDemo();
public fianl static EnumDemo B= new EnumDemo();
public fianl static EnumDemo C= new EnumDemo();
private EnumDemo(){
}
}
对外调用时EnumDemo.A,EnumDemo.B
以上是没有引入枚举时使用枚举的方法,现在引入枚举可以直接写:
enum EnumDemo{
A,B,C;
}
相当于上面的代码。
带字段、方法、构造函数的枚举:
enum EnumDemo{
A("a"),B("b"),C("c");
private String value;
private EnumDemo(Sring str){
this.value=str;
}
public String getValue(){
return this.value;
}
}
带抽象方法:
package com.summer.day1;
public enum EnumDemo {
A("a"){
@Override
public String getLocalValue() {
// TODO Auto-generated method stub
return "优秀";
}
}
,B("b") {
@Override
public String getLocalValue() {
// TODO Auto-generated method stub
return "良好";
}
}
,C("c") {
@Override
public String getLocalValue() {
// TODO Auto-generated method stub
return "一般";
}
};
private String value;
private EnumDemo(String str){
this.value=str;
}
public String getValue(){
return this.value;
}
public abstract String getLocalValue();
}
注意:要在枚举时覆写抽象方法,否则会报错。
总结:
- 枚举类中的每一个枚举值都是枚举类的一个实例对象。
- 枚举的构造方法必须private。
- 枚举类也可以实现接口,继承抽象类。
- 若枚举只有一个枚举值,可以当做单态设计模式使用。
- Java中所有的枚举类都继承了java.lang.Enum。常用的方法name(),ordinal()(枚举从0开始计数),valueof(class,string)(用来检验表单提交的值是不是枚举允许的)、values()(在开发文档里查询不到,一般用来遍历枚举)