枚举(values()方法、枚举与switch、Enum类、enum和Enum的区别)
一、枚举的定义
枚举也是在JDK1.5之后提出的概念,可以认为是多例设计的一种,只是相较来说更简单,也是因为有了枚举多例模式就受到了冷落,一般很少使用了。枚举也是一种定义有限个对象的结构。
创建枚举要使用enum关键字,隐含了所创建的类都是java.lang.Enum类的子类(java.lang.Enum是一个抽象类),如下:
enum Colors {
BLUE,
RED,
GREED;
}
public class EnumTest {
public static void main(String[] args) {
Colors c = Colors.BLUE;
System.out.println(c);
}
}
BLUE
二、枚举的values()方法
values()方法用于取得枚举对象的所有值,将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类。
enum Colors {
BLUE,
RED,
GREED;
}
public class EnumTest {
public static void main(String[] args) {
List<Colors> list = new ArrayList<Colors>();
for(Colors c : Colors.values()){
list.add(c);
}
System.out.println(list);
}
}
[BLUE, RED, GREED]
三、 枚举与switch结构
JDK1.5后,switch可以使用枚举来作为条件:
enum Colors {
BLUE,
RED,
GREED;
}
public class EnumTest {
public static void main(String[] args) {
Colors c = Colors.BLUE;
switch (c) {
case RED:
System.out.println("红色");
break;
case BLUE:
System.out.println("蓝色");
break;
case GREED:
System.out.println("绿色");
break;
}
}
}
蓝色
四、Enum类
上面定义枚举时,类名前的enum就是代表这个类默认继承Enum类,它有几个比较重要的方法:
- 构造方法:Enum(String name,int ordinal)----------传入名字和序号
- 获得名字:String name()
- 获得序号:int ordinal()
enum Colors {
BLUE,
RED,
GREED;
}
public class EnumTest {
public static void main(String[] args) {
for(Colors c:Colors.values()) {
System.out.println(c.ordinal() + "*****" + c.name());
}
}
}
0*****BLUE
1*****RED
2*****GREED
其中,序号是定义枚举对象的顺序,与定义的顺序一致。
五、enum和Enum的区别
- enum是JDK1.5之后提供的一个关键字,用于定义枚举类;
- Enum是一个抽象类,使用了enum关键字的类就默认继承Enum类。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!