當我們在開發中,有一組常數
對應不同的狀態來顯示時,就可以考慮使用 enum class
/**
* 自定義列舉類
* @author sunwc
* @create 2023-03-27 下午 03:53
*/
public class Season {
// 1. 宣告Season物件的屬性:private final 修飾
private final String name;
private final String desc;
// 2. 私有的建構子,將屬性指定值
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
/**
* 提供列舉物件:public static final 修飾
*/
public static final Season SPRING = new Season("spring", "春暖花開");
public static final Season SUMMER = new Season("summer", "盛夏光年");
public static final Season AUTUMN = new Season("autumn", "秋高氣爽");
public static final Season WINTER = new Season("winter", "寒風凜凜");
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("Season{");
sb.append("name='").append(name).append('\'');
sb.append(", desc='").append(desc).append('\'');
sb.append('}');
return sb.toString();
}
}
class EnumClassTest {
@Test
public void getEnumSeason() {
System.out.println(Season.SPRING.getName());
System.out.println(Season.AUTUMN.getDesc());
System.out.println(Season.WINTER.toString());
}
}
定義的列舉類 默認繼承於 java.lang.Enum
常用方法
1.values()
2.valueOf()
3.toString()
enum 列舉類可以 implements interface
/**
* 使用enum關鍵字定義列舉類
* @author sunwc
* @create 2023-03-27 下午 03:53
*/
public enum Season1 implements Info {
/**
* 提供列舉物件
*/
SPRING("spring", "春暖花開") {
@Override
public void show() {
System.out.println("這是有關春天的訊息");
}
},
SUMMER("summer", "盛夏光年") {
@Override
public void show() {
System.out.println("這是有關夏天的訊息");
}
},
AUTUMN("autumn", "秋高氣爽") {
@Override
public void show() {
System.out.println("這是有關秋天的訊息");
}
},
WINTER("winter", "寒風凜凜") {
@Override
public void show() {
System.out.println("這是有關冬天的訊息");
}
};
// 宣告Season1物件的屬性:private final 修飾
private final String name;
private final String desc;
// 2. 私有的建構子,將屬性指定值
private Season1(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
}
class EnumKeywordTest {
@Test
public void getEnumSeason1() {
System.out.println(Season1.class.getSuperclass()); // class java.lang.Enum
System.out.println(Season1.SPRING.getName());
System.out.println(Season1.AUTUMN.getDesc());
System.out.println(Season1.WINTER);
// 遍歷所有列舉物件並調用interface抽象方法 show()
for (int i = 0; i < Season1.values().length; i++) {
Season1.values()[i].show();
}
}
}
/**
* 自定義 interface
*/
interface Info {
void show();
}
輸出結果:
class java.lang.Enum
spring
秋高氣爽
WINTER
這是有關春天的訊息
這是有關夏天的訊息
這是有關秋天的訊息
這是有關冬天的訊息