开发者学堂课程【【名师课堂】Java 高级开发:枚举(enum 类) 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/372/detail/4542
枚举(enum 类)
内容简介
一、Enum 类
二、enum 和 Enum 的区别?
一、Enum 类
虽 然 JDK1.5 提供有 enum 关键字,但是 enum 并不是一种新的结构,相反,它只是对一种类型的包装:
使用 enum 关键字定义的枚举类本质上就相当于一 class 定义的类继承了java.lang.Enum 父类。
父类是:
打开 Java 找到 Java.lang 找到 e num 打开:
Class Enum<E extends Enum<E>>
java.lang.Object
java.lang.Enum<E>
Type Parameters:
E- The enum type subclass
All lmplementec lnterfaces:
Serializable. comparable<E>
<E extends Enum<E>> 首先 E 设置了泛型的上线必须是 extends Enum 继承自<E> ,这个地方能存的就是一个枚举。
在 Enum 类里面有以下的方法:
l 构造方法:protected Enum(String name, int ordinal);
l 取得枚举名字:public final String name()
l 取得枚举的序号:public final int ordinal()
范例:观察方法的使用
package cn.mldn. demo;
enum Color {
RED,GREEN,BLUE ;
}
public class TestDemo {
public static void main(string[ ]args) {
system.out.print1n(color.RED);
}
在此基础上 System. out . println(Color.RED) ; 跟上序号 ordinal()+”=”再加上Color.RED.name()
System.out.println(Color.RE,ordinal()+”=”+ Color.RED.name()) 执行出现:
0=RED
如果把 green 放在前边执行出现:1=RED
所以:构造方法:protected Enum(String name, int ordinal);
是当定义枚举类中对象的时候自动设置序号和名字;
在枚举操作里面还有一个方法可以取得所有的枚举数据:values() 返回的是一个枚举的对象数组;
范例:取得所有的枚举数据
package cn.mldn. demo;
enum Color {
RED,GREEN,BLUE ;
}
public class TestDemo {
public static void main(string[ ]args) {
system.out.print1n(color.RED);
}
在上述基础上写入 for(Color temp:Color values()) 返回的是一个对象数组,后边跟上 temp,如图:
package cn.mldn.demo;
enum color {
RED,GREEN,BLUE ;
}
public class TestDemo {
public static void main(string[ ] args) {
for (color temp : color.values()){
system.out.println(temp.ordinal() + "= " + temp.name());
}
执行出现:
0=RED
1=GREEN
2=BLUE
所以这个功能是多例本身不具备的,枚举与多例模式最大的区别就是 values
二、enum 和 Enum 的区别?
面试题:请解释 enum 和 Enum 的区别?
enum 是一个关键字,使用 enum 定义的枚举类本质上相当于一个类继承了 Enum这个抽象类。