天天看点

Java——枚举枚举类的使用定义枚举类Enum类中的常用方法

枚举类

  • 枚举类的使用
  • 定义枚举类
  • Enum类中的常用方法

枚举类的使用

1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类

2.当需要定义一组常量时,强烈建议使用枚举类

3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。

定义枚举类

方式一: jdk5.0之前,自定义枚举类

方式二:jdk5.0,可以使用enum关键字定义枚举类

方式一:
public class 自定义 {
    public static void main(String[] args) {
        Season season=Season.SPRING;
        System.out.println(season);
    }
}
//自定义枚举类
class Season{
//1、声明Season对象的属性
    private final String seasonName;
    private final String seasonDesc;
//2、私有化类的构造器;并给对象属性赋值
    private Season(String seasonName, String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
//3、提供当前类的多个对象 public static final
    public static final Season SPRING=new Season("春天","春暖花开");
    public static final Season SUMMER=new Season("夏天","夏日炎炎");
    public static final Season AUTUMN=new Season("秋天","秋高气爽");
    public static final Season WINTER=new Season("冬天","冰天雪地");
    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}
方式二:
public class 关键字enum {
    public static void main(String[] args) {
        Season1 summer = Season1.SUMMER;
        System.out.println(summer);
    }
}
enum Season1{
    //1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束,且必须放在类开头
    SPRING("春天","春暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","冰天雪地");
    //2、声明Season对象的属性
    private final String seasonName;
    private final String seasonDesc;
    //3、私有化类的构造器;并给对象属性赋值
    private Season1(String seasonName, String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
}
           

Enum类中的常用方法

使用enum关键字定义的枚举类实现接口的情况

情况一:实现接口,在enum类中实现抽象方法.

情况二:让枚举类的对象分别实现接口中的抽象方法.

方法 描述
valueOf() 传递枚举类型的Class对象和枚举常量名称给静态方法valueOf,会得到与参数匹配的枚举常量。
toString() 得到当前枚举常量的名称。你可以通过重写这个方法来使得到的结果更易读。
equals() 在枚举类型中可以直接使用"== " 来比较两个枚举常量是否相等。Enum提供的这个equals0方法,也是直接使用 =="实现的。它的存在是为了在Set、List和 Map中使用。注意,equals()是不可变的。
hashCode() Enum实现了hashCode()来和equals()保持一致。它也是不可变的。
getDeclaringClass() 得到枚举常量所属枚举类型的Class对象。可以用它来判断两个枚举常量是否属于同一个枚举类型。
name 得到当前枚举常量的名称。建议优先使用toString()。
ordinal 得到当前枚举常量的次序。
compareTo() 枚举类型实现了Comparable接口,这样可以比较两个枚举常童的大小(按照声明的顺序排列)
clone() 枚举类型不能被Clone。为了防止子类实现克隆方法,Enum实现了一个仅抛出CloneNotSupportedException异常的不变Clone()o