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枚举类的构造函数实例详解”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。