Java枚举类

0 阅读1分钟

创建枚举类

  • 枚举类会再类中直接静态的提供枚举对象
    package src.enums;
    
    public enum SeasonOfYear {
        SPRING
        ,SUMMER
        ,AUTUMN
        ,WINTER;
    }
    

枚举比较是否相等是用==还是equals方法?

  • 都可以,取枚举对象的引用就是是指向枚举内已经定义好的枚举对象,所以无论用==还是equals方法,结果都是true
package src.enums;
public class EnumTest {
    public static void main(String[] args) {
        SeasonOfYear season = SeasonOfYear.SPRING;
        if(season == SeasonOfYear.SPRING){
            System.out.println("SPRING");//ture
        }

        if(season.equals(SeasonOfYear.SPRING)){
            System.out.println("SPRING");//ture
        }
    }

}
  • 枚举类都继承了Enum类,在这个类中只有toString方法可以重写其他方法都被final修饰了,比如hashCode方法

    image.png

枚举类中的属性

  • 枚举类中可以添加属性(成员变量),并用构造方法给枚举对象赋属性值,但与此同时也要
public enum SeasonOfYear {
    SPRING("春天")
    ,SUMMER("夏天")
    ,AUTUMN("秋天")
    ,WINTER("冬天");
    // 任何一个枚举类型都是默认继承Enum类,所以枚举类型可以直接使用Enum类的方法

    //枚举中设置属性
    private final String chineseName;
    // 要给枚举对象属性值可以通过构造方法,但必须先给枚举的对象的属性初始化一个参数
    SeasonOfYear(String chineseName) {
        this.chineseName = chineseName;
    }

    public String getChineseName() {
        return chineseName;
    }

    @Override
    public String toString() {
        return super.toString();
    }
}
  • 枚举类中的对象一般作为常量使用,所以一般不提供属性的setter方法,而且属性会用private final 修饰

Enum类中自带的方法

  • 因为枚举类都继承Enum所以,Enum中的方法枚举类也可以使用,比如比较常用的value()方法
package src.enums;

public class EnumTest {
    public static void main(String[] args) {
        SeasonOfYear season = SeasonOfYear.SPRING;
        if(season == SeasonOfYear.SPRING){
            System.out.println("SPRING");
        }
        if(season.equals(SeasonOfYear.SPRING)){
            System.out.println("SPRING");
        }
        for (SeasonOfYear value : SeasonOfYear.values()) {
            System.out.println(value);
        }
    }
}