Java基础-枚举
程序员文章站
2022-07-14 21:06:17
...
Enum:枚举类
1、使用 enum 关键字定义枚举类
一、枚举类的使用
1、枚举类的理解:类的对象只有有限个,确定的。我们称此类未枚举类。
2、当需要定义一组常量时,强烈建议使用枚举类。
3、如果枚举类中只有一个对象,则可以作为单例模式的实现方式。
jdk 5.0后,可以使用enum关键字定义枚举类。(推荐使用,比较便捷)
public class SeasonTest1{
public static void main(String[] args) {
Season summer = Season.SUMMER;
// 演示toString()方法 - 返回当前枚举类对象常量的名称
System.out.println(summer.toString());
// values()方法演示
Season[] values = Season.values()
for(int 1 = 0; i < values.length; i++){
System.out.println(values[i]);
}
// valueOf(String objName):返回枚举类中对象名是objName的对象
Season winter = Season.valueOf("WIINTER");
// 如果没有objName的枚举对象,则抛异常:IllegaArgumentException
System.out.println(winter);
}
}
enum Season { // Season 的父类是:Enum
// 提供当前枚举类的对象,多个对象之间用 "," 号隔开,末尾的对象用:";"结束
// SPRING、SUMMER、AUTUMN、WINTER是Season不同对象的对象名
// 每个对象中都包换两个属性;(这里这两个属性的类型都是String的)
SPRING("春天","穿暖花开"),
SUMMER("夏天", "夏日炎炎"),
AUTUMN("秋天", "秋高气爽"),
WINTER("冬天", "冰天雪地");
// 声明Season对象的属性
private String seasonName;
private String seasonDesc;
// 构造方法不能省,否则报错
Season(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
}
2、Enum类中的常用方法
3、枚举类实现接口
使用enum关键字定义的枚举类实现接口:
和类实现接口一样,也是用 implents + 接口名称;
public class SeasonTest1{
public static void main(String[] args) {
Season summer = Season.SUMMER;
// 演示toString()方法 - 返回当前枚举类对象常量的名称
System.out.println(summer.toString());
// values()方法演示
Season[] values = Season.values()
for(int 1 = 0; i < values.length; i++){
System.out.println(values[i]);
}
// valueOf(String objName):返回枚举类中对象名是objName的对象
Season winter = Season.valueOf("WIINTER");
// 如果没有objName的枚举对象,则抛异常:IllegaArgumentException
System.out.println(winter);
winter.show();
}
}
enum Season implents InterfaceDemo{ // Season 的父类是:Enum
// 提供当前枚举类的对象,多个对象之间用 "," 号隔开,末尾的对象用:";"结束
// SPRING、SUMMER、AUTUMN、WINTER是Season不同对象的对象名
// 每个对象中都包换两个属性;(这里这两个属性的类型都是String的)
// 也可以每个枚举类的对象分别实现接口中的方法
SPRING("春天","穿暖花开"){
System.out.println("春天漂亮呀...");
},
SUMMER("夏天", "夏日炎炎"){
System.out.println("夏天漂亮呀...");
},
AUTUMN("秋天", "秋高气爽"){
System.out.println("秋天漂亮呀...");
},
WINTER("冬天", "冰天雪地"){
System.out.println("冬天漂亮呀...");
};
// 声明Season对象的属性
private String seasonName;
private String seasonDesc;
// 构造方法不能省,否则报错
Season(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
// 重写InterfaceDemo接口中的 show() 方法
@Override
public void show(){
System.out.println("漂亮呀...");
}
}