Java之enum枚举

简介: 一.什么是枚举(enum)1.枚举对应英文(enumeration,简写enum)2.枚举是一组常量的集合,枚举对象名通常使用大写3.枚举属于一种特殊的类,里面只包含一组有限的特定的对象

Java之enum枚举



一.什么是枚举(enum)


1.枚举对应英文(enumeration,简写enum)


2.枚举是一组常量的集合,枚举对象名通常使用大写


3.枚举属于一种特殊的类,里面只包含一组有限的特定的对象


二.枚举的实现方式


1.自定义类实现枚举


(1)将构造器私有化,防止直接new


(2)去掉setXxx方法,防止属性被修改


(3)在Season内部,直接创建固定的对象


(4)优化,可以加入final修饰符


public class EnumDemo1 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
    }
}
//演示定义枚举实现
class Season {//类
    private String name;
    private String desc;//描述
    public static final Season SPRING = new Season("春天", "温暖");
    public static final Season SUMMER = new Season("夏天", "炎热");
    public static final Season AUTUMN = new Season("秋天", "凉爽");
    public static final Season WINTER = new Season("冬天", "寒冷");
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
}


2.使用enum关键字实现枚举


(1)使用关键字enum替代class


(2)public static final Season AUTUMN = new Season1(“秋天”, “凉爽”); 直接使用 AUTUMN(“秋天”, “凉爽”)


(3)如果有多个常量(对象),使用逗号隔开


(4)如果使用enum来实现枚举,要求将定义常量对象,放在前面


注意:1)当我们使用enum关键字开发一个枚举类时,默认会继承Enum类,而且是一个final类


2)如果我们使用的是无参构造器,创建常量对象,则可以省略小括号()


public class EnumDemo02 {
    public static void main(String[] args) {
        System.out.println(Season1.SPRING);
        System.out.println(Season1.SUMMER);
    }
}
enum Season1 {//类
    SPRING("春天", "温暖"), SUMMER("夏天", "炎热"), AUTUMN("秋天", "凉爽"), WINTER("冬天", "寒冷");
    private String name;
    private String desc;//描述
    @Override
    public String toString() {
        return "Season{" + "name='" + name + '\'' + ", desc='" + desc + '\'' + '}';
    }
    private Season1(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
}


二.enum的常用方法


264312aebb00475c8deb50b45578504f.png


注意:1)ordinal()方法输出的是该枚举对象的次序/编号,从0开始编号


2)values()方法通过反编译可以看到该方法,返回枚举定义的所有对象


3)compareTo()方法就是将它们的编号相减


目录
相关文章
|
21天前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
101 60
|
2月前
|
安全 Java 索引
Java——反射&枚举
本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
63 9
Java——反射&枚举
|
2月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
81 5
|
2月前
|
安全 Java 开发者
Java 枚举(enum)详解
Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
|
3月前
|
Java
Java枚举使用的基本案例
这篇文章是关于Java枚举的基本使用,通过一个指令下发的代码案例,展示了如何定义枚举、使用枚举以及如何通过枚举实现指令的匹配和处理。
|
3月前
|
Java 开发者
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案
在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案。本文通过技术综述及示例代码,剖析两者在性能上的差异。if-else具有短路特性,但条件增多时JVM会优化提升性能;switch则利用跳转表机制,在处理大量固定选项时表现出色。通过实验对比可见,switch在重复case值处理上通常更快。尽管如此,选择时还需兼顾代码的可读性和维护性。理解这些细节有助于开发者编写出既高效又优雅的Java代码。
55 2
|
4月前
|
Java
Java里的enum类型可以用这swich里吗
Java里的enum类型可以用这swich里吗
33 9
|
3月前
|
安全 Java 编译器
|
4月前
|
存储 缓存 Java
java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决
java枚举消除冗余代码问题之findByName和findByValue方法工作时的问题如何解决
|
4月前
|
安全 Java
Java进阶之枚举
【7月更文挑战第11天】Java枚举是Java 5引入的特性,用于定义固定常量集合,如星期。枚举是继承自`java.lang.Enum`的特殊类,编译后成为final类,每个枚举值是静态final实例。定义枚举用`enum`关键字,如`public enum Weekday {MONDAY, TUESDAY, ...}`。枚举可包含方法和变量,能实现接口但不能继承其他类。例如,`Weekday`枚举可实现`Describe`接口,提供`describe()`方法。在实际应用中,枚举常用于表示如响应状态等固定选项,便于类型安全和代码阅读。
39 8