(JAVA): 自定义枚举和enum枚举类型——详解。

目录 言图: ☣☣一、基本介绍 ☣1、什么是枚举 ☣2、枚举的特点 ☣3、枚举的实现方式 ☣☣二、自定义类实现…

目录

言图:

☣☣一、基本介绍

☣1、什么是枚举

☣2、枚举的特点

☣3、枚举的实现方式

☣☣二、自定义类实现枚举

☣1、自定义枚举的特点

☣2、代码示例

☣3、代码分析

☣☣三、enum关键字实现枚举

☣1、enum使用细节

☣2、enum实现接口

☣3、代码示例

四、enum常用方法

1、常用方法表

2、常见方法演示:代码示例

五、在switch中使用枚举 :代码示例


言图:

☣☣一、基本介绍

☣1、什么是枚举

枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。本质就是一个类里定义几个静态变量,每个变量都是这个类的实例。

☣2、枚举的特点

❶ 枚举是一组常量的集合

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

☣3、枚举的实现方式

❶ 自定义类实现枚举

❷ 使用 enum 关键字实现枚举


☣☣二、自定义类实现枚举

☣1、自定义枚举的特点

▷ 不需要提供setXxx方法,因为枚举对象值通常为只读

▷ 对枚举对象、属性使用 final + static 共同修饰,实现底层优化

▷ 枚举对象名通常全部大写,遵循常量命名的规范

▷ 枚举对象根据需要,可以有多个属性

☣2、代码示例

☣3、代码分析

注意:自定义类枚举,创建的类是class 类,比如代码中的:class Season { }

自定义枚举的一般思路:

▷ 写属性:私有化

▷ 写构造器:将构造器私有化,为了防止直接 new

▷ 写getXxx方法:去掉 setXxx 方法, 防止属性被修改,只保留getXxx方法,用于读取

▷ 重写toString()方法,用于输出

▷ 在自定义枚举的内部,直接创建固定的对象 ,

▷ 可以加入 final 修饰符进行优化


☣☣三、enum关键字实现枚举

☣1、enum使用细节

① 我们使用 enum 关键字定义一个枚举类时,默认会继承 java.lang.Enum 类, 而且是一个 final 类,如图:

② 自定义枚举类的写法: public static final Season2 SPRING = new Season2(“春天”)

③ enum关键字实现枚举的写法: SPRING(“春天”)

④ 如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略

⑤ 当有多个枚举对象时,使用 “,” 间隔,最后有一个分号结尾

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

☣2、enum实现接口

▷ 使用enum关键字后,就不能再继承其他类了,因为enum会隐式继承Enum,而Java是单继承机制

▷ 枚举类和普通类一样,可以实现接口,形式:enum 类名 implements 接口1,接口2{}

3、代码示例


四、enum常用方法

1、常用方法表

方法名 详细描述
valueOf 传递枚举类型的Class对象和枚举常量名称給静态方法valueOf,会得到与参数匹配的枚举常量。
toString 得到当前枚举常量的名称。你可以通过重写这个方法来使得到的结果更易读。
equals 在枚举类型中可以直接使用“==”来比较两个枚举常量是否相等。Enum提供的这个equals0方法,也是直接使用“==”实现的。它的存在是为了在Set、List 和Map中使用。注意,equals()是不可变的。
hashCode 实现了hashCode0来和equals0保持- – 致。它也是不可变的。
getDeclaringClass 得到枚举常量所属枚举类型的Class对象。可以用它来判断两个枚举常量是否属于同一一个枚举类型。
name 得到当前枚举常量的名称。建议优先使用toString0
ordinal 得到当前枚举常量的次序。
compareTo 枚举类型实现了Comparable接口,这样可以比较两个枚举常堂的大小(按照声明的顺序排列)。
clone 枚举类型不能被Cloneo为了防止子类实现克隆方法,Enum 实现了一个仅抛出CloneNotSupportedException异常的不变Clone0。
values 返回枚举类中所有的值。

2、常见方法演示:代码示例

首先定义一个enum Weekday 类:


1、name 方法:


2、toString 方法:


3、ordinal 方法:


4、values 方法:


5、valueOf 方法:


6、compareTo 方法:


五、在switch中使用枚举 :代码示例

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/7929.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部