让星星⭐月亮告诉你,(示例实战)enum枚举类九大特性详解

简介: 本文详细解析了Java枚举类的九大特性,包括定义枚举、迭代、Switch语句、枚举操作方法、构造函数和方法、抽象方法等,并通过实战示例展示了如何在Java中定义和使用枚举。通过阅读本文,你将能够掌握枚举类的使用技巧,提升编码水平。关键词:Java, 枚举类, Enum, 特性, 实战示例。

标题:【Java枚举全解析】探索枚举类的九大特性及其应用实例

摘要

枚举类型在Java编程中扮演着重要角色,它们提供了一种类型安全的方式来表示一组固定的常量。本文将详细解析枚举类的九大特性,并通过实战示例展示如何在Java中定义和使用枚举。通过阅读本文,你将能够掌握枚举类的使用技巧,提升编码水平。

关键词

Java, 枚举类, Enum, 特性, 实战示例

一、引言

Java中的枚举(enum)类型是一种特殊的类,用于表示一组固定的常量。枚举提供了一种类型安全的方式来定义常量,使得代码更加清晰和易于维护。

二、枚举类的特性

2.1 定义枚举

Java枚举是用enum关键字定义的,常量之间用逗号分隔。

enum Season {
   
    SPRING, SUMMER, AUTUMN, WINTER
}

2.2 迭代枚举

可以使用for-each循环来迭代枚举。

for (Season season : Season.values()) {
   
    System.out.println(season);
}

2.3 Switch语句

枚举常量可以用于switch语句中。

Season season = Season.SUMMER;
switch (season) {
   
    case SPRING:
        System.out.println("春暖花开");
        break;
    case SUMMER:
        System.out.println("夏日炎炎");
        break;
    case AUTUMN:
        System.out.println("秋高气爽");
        break;
    case WINTER:
        System.out.println("冬寒抱冰");
        break;
}

2.4 Values、Ordinal和ValueOf

  • values()返回所有枚举值。
  • ordinal()返回枚举的索引。
  • valueOf()返回指定字符串的枚举常量。
System.out.println(Season.SPRING.ordinal()); // 输出0
Season winter = Season.valueOf("WINTER");
System.out.println(winter); // 输出WINTER

2.5 构造函数和方法

枚举可以有自己的变量、方法和构造函数。

enum Color {
   
    RED, GREEN, BLUE;

    Color() {
   
        // 构造函数内容
    }

    public void display() {
   
        System.out.println(this.name());
    }
}

2.6 抽象方法

枚举可以包含抽象方法,每个实例都必须实现这些方法。

enum Operation {
   
    PLUS, MINUS, MULTIPLY, DIVIDE;

    public abstract int apply(int x, int y);
}

2.7 不能被继承或实现

枚举类不能被继承或实现接口,但可以作为内部类。

三、实战示例

enum EnumTest {
   
    INSTANCE {
   
        @Override
        void m2() {
    System.out.println("INSTANCE m2"); }
        @Override
        void m3() {
    System.out.println("INSTANCE m3"); }
    },
    INSTANCE2 {
   
        @Override
        void m2() {
    System.out.println("INSTANCE2 m2"); }
        @Override
        void m3() {
    System.out.println("INSTANCE2 m3"); }
    };

    private EnumTest() {
   }

    public void m1() {
    System.out.println("m1"); }
    abstract void m2();
    abstract void m3();
}

public class TestEnum {
   
    public static void main(String[] args) {
   
        EnumTest.VALUES.m1();
        EnumTest.VALUES.m2();
        EnumTest.VALUES.m3();
    }
}

四、性能比较

特性 描述
迭代 支持for-each循环迭代
Switch语句 支持switch语句
Values 返回所有枚举值
Ordinal 返回枚举的索引
ValueOf 返回指定字符串的枚举常量
构造函数 枚举可以有自己的构造函数,但必须是private
抽象方法 枚举可以包含抽象方法
继承和实现 不能被继承或实现接口,但可以作为内部类

五、流程图

graph TD
    A[开始] --> B[定义枚举]
    B --> C{枚举特性}
    C -- 迭代 --> D[for-each循环]
    C -- Switch --> E[switch语句]
    C -- Values/Ordinal/ValueOf --> F[枚举操作方法]
    C -- 构造函数和方法 --> G[自定义行为]
    C -- 抽象方法 --> H[多态实现]
    C -- 不能继承或实现 --> I[类限制]
    I --> J[结束]

六、文章内容总结

序号 内容 方法 结果
1 定义枚举 使用enum关键字 固定常量集合
2 迭代枚举 for-each循环 便捷遍历
3 Switch语句支持 使用枚举常量 增强可读性
4 枚举操作方法 values, ordinal, valueOf 操作方便
5 自定义构造函数和方法 构造函数和抽象方法 行为封装
6 不能继承或实现 限制枚举类 保证安全

七、鼓励读者

枚举类是Java中一个非常有用的特性,它不仅使代码更加清晰,还可以提高代码的可维护性。如果你有更多关于枚举类的使用技巧或者疑问,欢迎在评论区分享和讨论!

八、Mermaid思维导图

graph LR
    A[Java枚举类] --> B[定义枚举]
    A --> C[迭代枚举]
    A --> D[Switch语句支持]
    A --> E[枚举操作方法]
    A --> F[自定义构造函数和方法]
    A --> G[不能继承或实现]
    B --> H[枚举常量]
    C --> I[for-each循环]
    D --> J[增强可读性]
    E --> K[values, ordinal, valueOf]
    F --> L[行为封装]
    G --> M[保证安全]
目录
相关文章
|
3月前
|
前端开发 图形学
Unity精华☀️UI和物体可见性的判断方法
Unity精华☀️UI和物体可见性的判断方法
|
6月前
|
Java
【Java每日一题】— —第二十四题:编程定义一个长方形类Rectangle
【Java每日一题】— —第二十四题:编程定义一个长方形类Rectangle
|
前端开发 Java C++
用上Java的Enum枚举 玩一玩课堂点到
用上Java的Enum枚举 玩一玩课堂点到
蓝桥杯-经典枚举案例
必须要一个数组来存放0-9每个卡片的余额,每个数组下标对应各自卡片【下标为0代表卡片0的数量】
技术汇总:第十八章:枚举的简单使用
技术汇总:第十八章:枚举的简单使用
106 0
技术汇总:第十八章:枚举的简单使用
|
存储 机器学习/深度学习 前端开发
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型①
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型①
77 0
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型①
|
存储 JavaScript 前端开发
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型②
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型②
93 0
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型②
|
前端开发 JavaScript
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型③
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型③
96 0
带你读书之“红宝书”:第三章 语法基础(中)之 数据类型中部分Number类型③
|
存储 前端开发
带你读书之“红宝书”:第五章 基本引用类型④
带你读书之“红宝书”:第五章 基本引用类型④
85 0
带你读书之“红宝书”:第五章 基本引用类型④
|
前端开发
带你读书之“红宝书”:第五章 基本引用类型②
带你读书之“红宝书”:第五章 基本引用类型②
63 0
带你读书之“红宝书”:第五章 基本引用类型②