java中的枚举(Enum)介绍和应用

Enum

Java枚举是一种特殊的类,用于表示固定数量的常量。通过学习Java枚举,我们可以更好地理解Java语言的特性和应用场景。

一、枚举基础

枚举类型是Java 5.0引入的新特性,主要用于表示一组固定数量的常量。枚举常量是该枚举类型的实例,每个常量都有一个唯一的名称和对应的值。例如,表示一周的七天、表示一年四季等。

二、枚举用法

  1. 声明枚举类型和常量:在声明枚举类型时,需要指定枚举常量的名称和值。例如:

enum WeekDay {
    // 定义一周中的七天
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}

2.每个枚举都是通过 Class 在内部实现的,且所有的枚举值都是 public static final 的。

以上的枚举类 WeekDay转化在内部类实现:

class WeekDay {
      public static final WeekDay MONDAY = new WeekDay();
    public static final WeekDay TUESDAY = new WeekDay();
    public static final WeekDay WEDNESDAY = new WeekDay();
    // 以此类推
}

  1. 使用枚举类型:在代码中可以直接使用枚举类型来表示常量。例如:

WeekDay day = WeekDay.MONDAY;
public class EnumDemo1 {
    public static void main(String[] args) {
        WeekDay monday = WeekDay.MONDAY;
        System.out.println(monday); // Monday
​
        WeekDay wednesday = WeekDay.WEDNESDAY;
        switch (wednesday) {
            case MONDAY :
                System.out.println("今天是星期一");
                break;
            case TUESDAY :
                System.out.println("今天是星二");
                break;
            case WEDNESDAY :
                System.out.println("今天是星期三");
                break;
            case THURSDAY :
                System.out.println("今天是星期四");
                break;
            case FRIDAY :
                System.out.println("今天是星期五");
                break;
            case SATURDAY :
                System.out.println("今天是星期六");
                break;
            case SUNDAY :
                System.out.println("今天是星期七");
                break;
        }
        // 输出  今天是星期三
    }
}

  1. 枚举方法:枚举类型可以包含任意类型的成员变量和方法。例如:

public enum Day {  
    MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日");  
      
    private String chineseName; // 成员变量  
      
    Day(String chineseName) { // 构造函数  
        this.chineseName = chineseName;  
    }  
      
    public String getChineseName() { // 方法  
        return chineseName;  
    }  
}

在这个例子中,Day枚举类型包含一个私有的成员变量chineseName和一个公有的构造函数。每个常量都有一个对应的chineseName值,通过调用getChineseName()方法可以获取该值。

  1. 枚举继承:枚举类型可以继承自其他类或实现其他接口。例如:

public interface Colors {  
    String RED = "红色";  
    String GREEN = "绿色";  
    String BLUE = "蓝色";  
}  
 
public enum WeekdayColor implements Colors {  
    MONDAY("红色"), TUESDAY("绿色"), WEDNESDAY("红色"), THURSDAY("绿色"), FRIDAY("红色"), SATURDAY("绿色"), SUNDAY("红色");  
}

在这个例子中,WeekdayColor枚举类型实现了Colors接口,并实现了接口中的常量。这样就可以在WeekdayColor枚举类型中使用Colors接口中的常量。

三、枚举应用

枚举在Java中有很多应用场景,以下是其中的一些:

  1. 常量分组:在JDK 1.5之前,我们定义常量都是使用public static final。有了枚举,我们可以将相关的常量分组到一个枚举类型里,这使得代码更易读,而且枚举提供了比常量更多的方法。

  2. 替代整数常量:使用枚举类型代替整数常量可以提高代码的可读性和可维护性。例如,可以使用Weekday枚举类型代替整数常量来表示一周中的某一天。

  3. 表示状态:枚举类型可以用来表示某种状态,例如表示订单的状态(未支付、已支付、已发货)等。

  4. 表示选项:枚举类型可以用来表示某种选项,例如表示性别(男、女)、职业(学生、工人、教师)等。

  5. 在switch语句中使用:由于枚举类型是对象,因此可以在switch语句中使用。

  6. 参数化枚举:可以创建带有参数的枚举常量对象。

  7. 重写toString方法:可以重写枚举的toString方法以返回更有意义的字符串。

  8. 实现接口:枚举类可以实现接口,例如:public interface Colors { String RED = "红色"; String GREEN = "绿色"; String BLUE = "蓝色"; },然后创建一个实现该接口的枚举类。

  9. 在集合中使用:可以将枚举类型放到集合中。

总的来说,使用枚举可以提高代码的清晰度和可维护性,防止多余数据的出现,以及使代码更加符合实际需求。

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java枚举类enum用于定义一组有限的常量。在Java 1.5之前,常量通常是使用public static final修饰的变量来定义的。而使用枚举类型可以更好地组织相关联的常量,并提供更多的方法操作。枚举类型的声明格式为:enum EnumName {ENUM_VALUE1, ENUM_VALUE2, ...}。其ENUM_VALUE1、ENUM_VALUE2等是枚举类型的常量。 枚举类型在Java有很多应用场景。例如,可以使用枚举类型来表示一周的星期几,定义颜色常量,定义状态等。通过使用枚举类型,可以增加代码的可读性和安全性。 此外,Java提供了一些与枚举类型相关的集合类,如EnumSet和EnumMap。EnumSet保证集合的元素不重复,而EnumMap的key是enum类型,而value可以是任意类型。这些集合类能够更方便地对枚举类型进行操作。 关于枚举类型的更多使用方法和规范,可以参考Java官方文档或阿里巴巴Java开发手册。123 #### 引用[.reference_title] - *1* *2* [Java枚举(enum)常用的用法总结](https://blog.csdn.net/qq_44866828/article/details/117380065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [Java 枚举(enum) 的常见用法和开发规范](https://blog.csdn.net/dichengyan0013/article/details/102347137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值