java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java的枚举

Java中枚举的使用方法详解

作者:信橙则灵

这篇文章主要介绍了Java中枚举的使用方法详解,比如我们想声明一组季节的集合,那这里面最多有四种,即春夏秋冬,不允许有其他的季节,那为了实现这种限制,体现出季节是固定的四个对象,我们可以使用枚举,需要的朋友可以参考下

枚举介绍(enumeration)

枚举:把具体的对象一个个的列举出来的类,称为枚举类。

枚举对应的是一组常量的集合枚举属于一种特殊的类,里面只包含一组有限的特点的对象

解释:比如我们想声明一组季节的集合,那这里面最多有四种,即春夏秋冬,不允许有其他的季节,那为了实现这种限制,体现出季节是固定的四个对象,我们可以使用枚举。

在这里插入图片描述

枚举的实现方式

自定义类实现枚举

1、将构造器私有化(私有化即private),目的是为了防止,直接new对象
2、去掉set相关的方法,防止属性被修改
3、在类的内部创建固定的对象;
4、优化,添加final修饰符,实现底层优化。

在这里插入图片描述

package com.zhangch.enum_;
public class Enumeration02 {
    public static void main(String[] args) {
        Season spring = Season.SPRING;
        System.out.println(spring);
    }
}
class Season{
    private String name;
    private String desc;
    // 3、通过static final 方法,对外暴露对象
    public static final Season SPRING = new Season("春", "阳光明媚");
    public static final Season SUMMER = new Season("夏", "炎热");
    // 1、构造器私有化
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    // 2、取消set方法,防止对属性进行修改
    public String getDesc() {
        return desc;
    }
    public String getName() {
        return name;
    }
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

enum关键字实现枚举

1、将类的声明关键字从 class 替换为 enum
2、声明枚举常量对象的格式为: SPRING(“春天”, “温暖”) → 常量名(参数列表);
其实enum相当于讲对象的声明简化了:

SUMMER(“夏天”, “炎热”); 等同于:public static final Season SUMMER = new Season(“夏”, “炎热”);

在这里插入图片描述

3、如果声明多个枚举常量(对象),则使用 逗号 进行隔开;

4、如果使用enum实现枚举,要求将定义的常量对象,写在对象最前面

package com.zhangch.enum_;
/**
 * @author zhangch
 * @version 1.0
 */
public class Enumeration01 {
    public static void main(String[] args) {
        System.out.println(Season.SPRING);
    }
}
// 演示自定义枚举
enum Season{
    // 1、使用enum关键字替换class
    // 2、声明枚举常量对象的方式: SPRING("夏天", "炎热") -->  常量名(参数列表)
    // 3、如果有多个常量(对象),使用逗号隔开
    // 4、如果使用enum实现枚举,要求将定义的常量对象,写在对象前面。
    SPRING("春天", "温暖"), SUMMER("夏天", "炎热");
    private String name;
    private String desc;
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
    public String getName() {
        return name;
    }
    public String getDesc() {
        return desc;
    }
    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

注意细节

1、当我们使用enum关键字修饰类的时候,默认汇集成Enum类,而且是一个final类可通过javap进行反编译(class文件到java文件)来进行查看 (javac为编译java文件到class文件)

在这里插入图片描述

2、当我们使用 无参构造器 创建 枚举常量对象 时,则实参列表和小括号均可以省略;

在这里插入图片描述

3、当有多个枚举对象时,使用 逗号 进行分隔, 最后使用 分号 进行结尾

4、枚举对象必须放在枚举类的行首。

enum常用方法说明

1、使用关键字enum时,会隐式的继承Enum类,这样我们就可以使用Enum里面的方法

在这里插入图片描述

valueOf: 将枚举常量的名称 作为参数 传递给枚举对象 ,找到后会返回与参数匹配的枚举常量。

Season value = Season.valueOf("SPRING");System.out.println(value);

ordinal: 得到当前枚举常量的编号,默认从 0 开始;即方法values返回的下标。

name:得到当前枚举常量的名称,建议使用 toString() 方法

compareTo:比较两个枚举常量的大小,使用枚举常量的编号相减的方式获取对应的大小。如果为0,则证明相等。

values: 返回当前枚举类中的所有枚举常量;

使用注意

使用enum关键字后,该类就不能再继承其他类了(单继承机制),但是,仍然可以使用接口继承

到此这篇关于Java中枚举的使用方法详解的文章就介绍到这了,更多相关Java的枚举内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文