1.简介
将相关常量分组到一个枚举类型里,用于定义有限数量的一组同类常量,例如:
错误级别:低、中、高、急
一年的四季:春、夏、秋、冬
商品的类型:美妆、手机、电脑、男装、女装...
在枚举类型中定义的常量是给枚举类型的实例
2.定义格式
(1)权限修饰符 enum 枚举名称{
实例1,实例2、实例3、、、
}
public enum Enum {
LOW(1),HIGH(100);
private int leverValue;
Enum(int leverValue) {
this.leverValue = leverValue;
}
public int getLeverValue() {
return leverValue;
}
public void setLeverValue(int leverValue) {
this.leverValue = leverValue;
}
}
(2)直接设置
public enum Enum {
LOW,MIDUM,HIGH;
}
3.常用方法
System.out.println(Enum.HIGH.compareTo(Enum.LOW));//比较两者的位置
System.out.println(Enum.HIGH.getLeverValue());//获取值
System.out.println(Enum.HIGH.equals(Enum.LOW));//比较两者是否相等
System.out.println(Enum.HIGH.ordinal());//这个枚举实例的顺序
System.out.println(Enum.HIGH.name());//枚举的名字
System.out.println(Enum.values().length);//枚举实例的长度
System.out.println(Enum.HIGH.getDeclaringClass());//枚举来自哪个
4.实现接口的枚举类
所有的枚举都继承自Java.Lang.Enum,由于Java不支持多继承,所以枚举对象不能再继承其他类,每个枚举对象都可以实现自己的抽象方法。
public interface LShow{
void show();
}
public enum Level1 implements LShow{
Low(30){
@override
public void show(){
//...
}
},MEDIUM(15){
@override
public void show(){
//...
}
}
};
private int levelValue;
private Level(int levelValue){
this.levelValue=levelValue;
}
5.注意事项
(1)一旦定义了枚举,最好不要妄图修改里面的值,除非修改是必要的。
(2)枚举类默认继承的是Java.Lang.Enum类而不是Object类
(3)枚举类不能有子类,因为其枚举类默认被fanal修饰。
(4)只能有private构造方法。
(5)switch中使用枚举时,直接使用常量名,不用携带类名。
(6)不能定义name属性,因为自带name属性。
(7)不要为枚举类中的属性提供set方法,不符合枚举设计初衷。