Java 枚举类Enum使用方法详解及常用方法介绍

前言:开发中我们经常需要定义一组常量,这时我们就可以使用枚举类。
注意:使用枚举类有个前提,就是我们这组常量的个数是有限个。例如:星期、四季、性别、支付方式、就职状态、线程装填等。

JDK1.5之前我们需要自定义枚举类,JDK1.5新增enum关键字。

1. 如何自定义枚举类呢?并不难,需要注意一下几个点:
  • 1)枚举对象的属性不允许别改动,所以应该使用private final关键字。
  • 2)枚举类中使用private final 修饰的属性应当在构造器中赋值。
  • 3)若枚举类显示定义了带参构造器,则在列举枚举值时也必须传入对应的参数。
代码举例:
/**
 * 不使用enum关键字
 */
public class CusDefEnumDemo01 {

    // 定义私有化不可变属性
    private final String SEASONNAME; // 季节的名称
    private final String SEASONDESC; // 季节的描述

    // 私有化构造器
    private CusDefEnumDemo01(String seasonname, String seasondesc) {
        SEASONNAME = seasonname;
        SEASONDESC = seasondesc;
    }

    // 定义类对象
    public static final CusDefEnumDemo01 SPRING = new CusDefEnumDemo01("春天",
            "春暖花开");
    public static final CusDefEnumDemo01 SUMMER = new CusDefEnumDemo01("夏天",
            "烈日炎炎");
}
2. 使用enum关键字创建枚举类
2.1 说明
  • 1)使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类。
  • 2)枚举类的构造器只能使用 private 权限修饰符。
  • 3)枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾)。列出的实例系统会自动添加 public static final 修饰。
  • 4)必须在枚举类的第一行声明枚举类对象。
2.2 代码举例
/**
 * 使用enum关键字创建枚举类
 */
enum SeasonEnum {
    SPRING("春天", "春意盎然"),
    SUMMER("夏天", "烈日炎炎");

    // 实例对象属性
    private String name;
    private String desc;

    private SeasonEnum(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    // 定义私有属性的get和set方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}
3. 常用方法
  • 1)valueOf()方法:获取对应的枚举常量对象。
// 它有两种传参方式
// 1. 创建枚举类型的Class对象和枚举常量的name
SeasonEnum.valueOf(SeasonEnum.class, "SPRING");
// 2. 直接传入枚举常量的name
SeasonEnum.valueOf("SPRING");

// 如果你传入的枚举常量的name在枚举类中不存在会报IllegalArgumentException。
// 这两种方式都会得到SPRING枚举常量对象,而且是一样的。所以我们一般使用第二种方式来获取枚举常量对象。
  • 2)toString()方法:返回当前枚举常量的常量名。
SeasonEnum spring = SeasonEnum.valueOf("SPRING");
System.out.println(spring);
SeasonEnum summer = SeasonEnum.valueOf("SUMMER");
System.out.println(summer);

在这里插入图片描述
一般我们会重写toString方法以获得更多信息,重写方式如下:

// Switch结构中,枚举对象可以直接作为表达式来使用,不需要添加枚举类作为限定
@Override
public String toString() {
    switch (this) {
        case SPRING:
            return SPRING.getName() + "\t" + SPRING.getDesc();
        case SUMMER:
            return SUMMER.getName() + "\t" + SUMMER.getDesc();
        default:
            return "unknow enum obj";
    }
}
  • 3)values() 方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有枚举值。
// 获取枚举类型的对象数组,并遍历打印name属性
SeasonEnum[] values = SeasonEnum.values();
for (SeasonEnum value : values) {
	System.out.println(value.getName());
}

在这里插入图片描述

  • 12
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 枚举是一种特殊的类,它表示一组常量。在 Java 中,枚举类型是通过关键字 `enum` 来定义的。Enum 类是所有枚举类型的基类,它提供了一些方法来处理枚举类型使用枚举类型可以提高代码的可读性和可维护性。枚举类型常用于表示一组固定的常量,例如颜色、星期几等。 以下是一个简单的示例,演示如何定义和使用枚举类型: ```java enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public class EnumExample { public static void main(String[] args) { DayOfWeek day = DayOfWeek.MONDAY; switch (day) { case MONDAY: System.out.println("Today is Monday"); break; case TUESDAY: System.out.println("Today is Tuesday"); break; case WEDNESDAY: System.out.println("Today is Wednesday"); break; case THURSDAY: System.out.println("Today is Thursday"); break; case FRIDAY: System.out.println("Today is Friday"); break; case SATURDAY: System.out.println("Today is Saturday"); break; case SUNDAY: System.out.println("Today is Sunday"); break; } } } ``` 上面的示例定义了一个枚举类型 `DayOfWeek`,它包含了一周中的每一天。在 `main` 方法中,我们将 `day` 变量初始化为 `DayOfWeek.MONDAY`,然后使用 `switch` 语句根据 `day` 的值输出相应的信息。 枚举类型还可以包含构造函数、方法和字段。下面的示例演示了如何在枚举类型中定义方法和字段: ```java enum Size { SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL"); private String abbreviation; private Size(String abbreviation) { this.abbreviation = abbreviation; } public String getAbbreviation() { return abbreviation; } } public class EnumExample { public static void main(String[] args) { Size size = Size.MEDIUM; System.out.println(size.getAbbreviation()); // 输出 "M" } } ``` 上面的示例定义了一个枚举类型 `Size`,它包含了衣服的尺码。每一个枚举常量都有一个对应的缩写,我们可以通过 `getAbbreviation` 方法获取它的值。在枚举类型中,我们还可以定义构造函数,这里我们使用了带参数的构造函数来初始化字段 `abbreviation`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值