Java枚举类的构造函数实例详解

Java中的枚举类提供了一种类型安全的枚举方式,通过使用枚举可以定义常量集合,在JDK 1.5之后引入的枚举类型(enum)是一种特殊的类,主要用于将一组常量组织起来,并且具有严格的类型检查,本文将详细解析Java中枚举类及其构造函数的使用,并通过实例进行说明。
一、最简单的枚举
最简单的枚举类型不包含任何字段和方法,仅用于定义常量。
public enum Season {
SPRING,
SUMMER,
FALL,
WINTER;
}
在这个例子中,Season是一个枚举类型,包含了四个季节常量。
二、带构造器的枚举
枚举类型也可以带有构造器和字段,在这种情况下,需要在枚举实例后面加上分号,然后写构造函数等,以下是一个例子:
public enum EOrderType {
INVALID(1, "无效的订单类型"),
NORMAL_ORDER(0, "一般订单"),
VD_DMONEY(50, "虚拟订单"),
PD_DMONEY(51, "礼品卡订单");
private int orderType;
private String description;
private EOrderType(int type, String desc) {
this.orderType = type;
this.description = desc;
}
public int getOrderType() {
return this.orderType;
}
public String getDescription() {
return this.description;
}
}
在这个例子中,EOrderType枚举类型包含了四个订单类型常量,每个常量都有一个整型和一个字符串描述,构造函数是私有的,只能被枚举类本身调用。
三、EnumSet的使用
EnumSet可以用来创建枚举集合,
import java.util.EnumSet;
public class Main {
public static void main(String[] args) {
EnumSet<EPriceType> set = EnumSet.noneOf(EPriceType.class);
set.addAll(EnumSet.complementOf(set));
System.out.println(set);
}
}
这个例子展示了如何使用EnumSet来操作枚举类型的集合。

四、枚举的构造函数执行次数
枚举类型的构造函数会在枚举值声明时自动调用一次。
public enum AccountType {
SAVING, FIXED, CURRENT;
private AccountType() {
System.out.println("It is a account type");
}
}
public class EnumOne {
public static void main(String[] args) {
System.out.println(AccountType.FIXED);
}
}
输出结果为:
It is a account type It is a account type It is a account type FIXED
这是因为每个枚举值都会调用一次构造函数。
五、枚举的继承与接口实现
枚举类可以继承自其他类或实现接口。
interface Describable {
String getDescription();
}
public enum Color implements Describable {
RED("红色") {
@Override
public String getDescription() {
return this.color;
}
},
GREEN("绿色") {
@Override
public String getDescription() {
return this.color;
}
},
BLUE("蓝色") {
@Override
public String getDescription() {
return this.color;
}
};
private final String color;
Color(String color) {
this.color = color;
}
}
在这个例子中,Color枚举实现了Describable接口,并覆盖了getDescription方法。
六、相关问题与解答
问题1: 如何在枚举中添加字段和方法?
答案: 可以在枚举中添加字段和方法,就像普通类一样。

public enum Car {
LAMBORGHINI(900), TATA(2), AUDI(50), FIAT(15), HONDA(12);
private final int price;
Car(int p) {
this.price = p;
}
public int getPrice() {
return this.price;
}
}
在这个例子中,Car枚举类型包含了一个整型字段price,以及一个获取价格的方法getPrice。
问题2: 如何创建一个枚举集合并遍历它?
答案: 可以使用EnumSet来创建枚举集合,并使用增强for循环来遍历它。
import java.util.EnumSet;
public class Main {
public static void main(String[] args) {
EnumSet<Season> seasons = EnumSet.allOf(Season.class);
for (Season season : seasons) {
System.out.println(season);
}
}
}
在这个例子中,我们创建了一个包含所有Season枚举值的集合,并遍历打印每个季节。
到此,以上就是小编对于“java枚举类的构造函数实例详解”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。













