Java基础知识回顾之枚举简介

本文探讨了Java中枚举(enum)的概念及其与多例模式的对比,详细解析了如何使用枚举来实现固定且有限的对象集合,如颜色或季节。通过代码示例展示了枚举的定义和使用,以及其与传统多例模式实现的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简述

从 2005 年之后,Java 增加了枚举的概念,同时增加了一个 enum 的关键字。在大多数情况下,Java 类 的对象是优先而且固定的,例如季节(只有春、夏、秋、冬)四个对象。像这种有限而且固定的类,就被称为枚举类。

详解

在我们没有接触到 枚举类的时候,如果是需要做的类似枚举的功能,就会用到 多例模式。

多例设计模式:

构造方法私有化,而后在类的内部提供若干个实例化对象,并且 通过 static 方法返回。

class Color {
	private String title;
	private static final Color RED = new Color("红色");
	private static final Color BLUE = new Color("蓝色");
	private static final Color GREEN = new Color("绿色");
 
	private Color(String title) {
		this.title = title;
	}
 
	public static Color getInstance(int ch) {
		switch (ch) {
		case 1:
			return RED;
		case 2:
			return BLUE;
		case 3:
			return GREEN;
		default:
			return null;
		}
	}
 
	@Override
	public String toString() {
		return this.title;
	}
}
 
public class Demo {
	public static void main(String[] args) {
		Color c = Color.getInstance(1);
		System.out.println(c);  // 红色
	}
}

上面的代码虽然是比较容易理解,但是实在是太啰嗦了。接着我们看看定义枚举(使用 enum 定义枚举):

英文定义

enum Color {// 定义枚举
	RED, BLUE, GREEN;// 表示此处为实例化对象
}
 
public class Demo {
	public static void main(String[] args) {
		Color c = Color.RED;
		System.out.println(c);
	}
}

中文定义

我们不一般不这样子使用,只是说明可以使用中文。

enum Color {// 定义枚举
	红色, 蓝色, 绿色;// 表示此处为实例化对象
}
 
public class Demo {
	public static void main(String[] args) {
		Color c = Color.蓝色;
		System.out.println(c);
	}
}

Enum 类

严格来讲枚举并不是一个新的功能,在 Java 中虽然使用了 enum 关键字定义了枚举,但是 enum 定义的枚举就相当于是一个类继承了 Enum 类而已。

Enum 类的定义:

public abstract class Enum<E extends Enum<E>>
extends Object
implements Comparable<E>, Serializable

Enum 类构造方法:

Enum 类的构造方法依然是被封装的,所以也属于构造方法私有化的应用范畴,所有的多例设计模式前提:构造方法私有化。

protected Enum(String name, int ordinal)

在Enum类里定义了两个方法:

  • 取得枚举索引:public final int ordinal();
  • 取得枚举的名字: public final String name();
enum Color {// 定义枚举
	红色, 蓝色, 绿色;// 表示此处为实例化对象
}
 
public class Demo {
	public static void main(String[] args) {
		for (Color c : Color.values()) {
			System.out.println(c.ordinal() + "-" + c.name());
		}
	}
}

enum 与 Enum 的区别?

  • enum 是一个关键字,Enum 是一个抽象类。
  • 使用 enum 定义的枚举就相当于一个类继承了 Enum 这个抽象类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wayfreem

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值