什么是枚举
-
常理上的枚举
有限的确定的常量集合 -
java中的枚举
A. 在JDK5中引入的枚举解决了之前通过常量来表示离散量所带来的问题,
大大加强了程序的可读性、易用性和可维护性,
B. 在此基础之上又进行了扩展,使之可以像类一样去使用,更是为Java对离散量的表
示上升了一个台阶。
C. 因此,如果在Java中需要表示诸如颜色、方式、类别、状态等等数目有限、形式离散、
表达又极为明确的量,应当尽量舍弃常量表示的做法,而将枚举作为首要的选择。
D. 枚举的值是枚举的实例对象。例如:单例设计模式,其实现方法有一种就是使用的枚举。public enum Singleton { INSTANCE; public void whateverMethod() { } }
-
枚举的类层级结构
package com.dzh.javaclassdemo.em;
/**
* 枚举
* [java基础]
*
* @author Jack Dzh
* @date 2021-09-16 21:17
*/
public enum TypeEnum {
/**
* public static final flied
*/
LOW,
MIDDLE,
HIGH;
/**
* private method
*/
TypeEnum() {
}
/*
1.枚举与普通类的区别【重点】
I.每个枚举常量是用逗号分隔,最后用分号;
II.枚举值是有顺序的;
III.枚举的构造方法默认私有,每个枚举值实际上是枚举类的不可更改的实例;
VI.默认继承Enum抽象类;
2.枚举的意义【重点】
a:在JDK5中新引入的枚举完美地解决了之前通过常量来表示离散量所带来的问题,大大加强了程序的可读性、易用性和可维护性,
并且在此基础之上又进行了扩展,使之可以像类一样去使用,更是为Java对离散量的表示上升了一个台阶。因此,
如果在Java中需要表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量,应当尽量舍弃常量表示的做法,
而将枚举作为首要的选择
b:枚举的出现解决了常量类所表示的单一信息
3.enum与Enum类
enum 是定义枚举时的关键字;
Enum 是枚举类默认继承的抽象类,它有name,ordinal字段和一些枚举常用的方法;
4.Enum 的常用方法
7个【重点】
5.参考资料[转载]
a: 网站
a.1: www.cnblogs.com/jsll/p/11613032.html
a.2: www.cnblogs.com/tonney/archive/2011/04/28/2032270.html
a.3: www.cnblogs.com/tonney/archive/2011/04/29/2032434.html
*/
public static void main(String[] args) {
/**
* Enum抽象类中的 fileds
*/
final String name;
final int ordinal;
/**
* Enum抽象类中的 method: name()
*/
System.out.println(TypeEnum.HIGH.name());
/**
* Enum抽象类中的 method: ordinal()
*/
System.out.println(TypeEnum.LOW.ordinal());
System.out.println(TypeEnum.MIDDLE.ordinal());
System.out.println(TypeEnum.HIGH.ordinal());
/**
* Enum抽象类中的 method: toStirng()
*/
System.out.println(TypeEnum.LOW.toString());
/**
* Enum抽象类中的method: equals(Object other)
*/
System.out.println(TypeEnum.LOW.equals(TypeEnum.LOW));
/**
* Enum抽象类中的method: compareTo
* 比较他们的ordinal
*/
int i = TypeEnum.HIGH.compareTo(TypeEnum.LOW);
System.out.println("---------------- " + i);
/**
* Enum抽象类中的method: getDeclaringClass()
*/
System.out.println(TypeEnum.LOW.getDeclaringClass());
/**
* Enum抽象类中的method: valueOf(Class<T> enumType,String name)
*/
System.out.println(TypeEnum.HIGH.valueOf(TypeEnum.class, "HIGH"));
}
/*
控制台输出结果:
HIGH
0
1
2
LOW
true
---------------- 2
class com.dzh.javaclassdemo.em.TypeEnum
HIGH (注意:控制台输出的是它,看起来跟字符串输出一样,但是事实上valueOf方法返回的是Enum对象)
*/
}