java枚举类
枚举类的使用
1、枚举类的理解:类的对象只有有限个,确定的
2、当开发中需要定义一组常量时候,强烈建议使用枚举类
3、如果枚举类只有一个对象,则可以作为单例模式的实现方式
如何自动定义枚举类
方式一:jdk5之前,自定义枚举类
package com.jn.枚举; /** * @author 江南大学1033190417 * @date 2022/2/3 22:45 * */ public class test01 { public static void main(String[] args) { System.out.println(Season.SPRING); } } class Season{ private final String seasonName; private final String seasonDesc; //1、私有化构造器 private Season(String seasonName,String seasonDesc){ this.seasonName=seasonName; this.seasonDesc=seasonDesc; } //提供当前枚举类的多个对象 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("冬天","冰天雪地"); public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } @Override public String toString() { return this.seasonName; } }
方式二:jdk5及其之后使用enum关键字
package com.jn.枚举; /** * @author 江南大学1033190417 * @date 2022/2/3 23:08 */ public class test02 { public static void main(String[] args) {
//几种常用方法 //toString() System.out.println(Season1.SPRING);//SPRING System.out.println(Season1.class.getSuperclass()); //values() Season1[] values = Season1.values(); for (Season1 s:values){ System.out.println(s); } //valueOf() Season1 winter = Season1.valueOf("WINTER"); System.out.println(winter);//WINTER } } enum Season1{ //提供当前枚举类的多个对象 SPRING("春天","春暖花开"), SUMMER("夏天","夏日炎炎"), AUTUMN("秋天","秋高气爽"), WINTER("冬天","冰天雪地"); private final String seasonName; private final String seasonDesc; //1、私有化构造器 private Season1(String seasonName,String seasonDesc){ this.seasonName=seasonName; this.seasonDesc=seasonDesc; } public String getSeasonName() { return seasonName; } public String getSeasonDesc() { return seasonDesc; } }
诉求:是enum继承接口
例如
interface Info{ void show(); } enum Season1 implements Info{
只够重写show()方法
@Override public void show() { System.out.println("继承了Info接口"); }
也可以具体情况具体而论
SPRING("春天","春暖花开"){
@Override
public void show() {
System.out.println("春天在哪里");
}
},
SUMMER("夏天","夏日炎炎"){
@Override
public void show() {
System.out.println("夏天悄悄过去");
}
},
AUTUMN("秋天","秋高气爽"){
@Override
public void show() {
System.out.println("秋天在哪里");
}
},
WINTER("冬天","冰天雪地"){
@Override
public void show() {
System.out.println("冬天不回来");
}
};

浙公网安备 33010602011771号