Java Enum 怎么添加变量
引言
在 Java 中,enum
是一种特殊的类,用于定义一组常量。enum
可以提供更好的类型安全性,以及更好的可读性和可维护性。每个枚举常量都是enum
类的一个实例,这些实例可以有自己的属性和方法。然而,与普通类不同,enum
类的实例是有限且固定的,不能动态添加或删除。
然而,在某些情况下,我们可能需要为枚举常量添加额外的变量来表示特定的状态、配置或属性。本文将重点介绍如何在 Java 的 enum
中添加变量,并提供一个示例来解决一个实际问题。
添加变量的方式
在 Java 的 enum
中,我们可以通过两种方式为枚举常量添加变量:
- 在
enum
常量声明中直接添加变量 - 在
enum
类中定义实例变量,并为每个枚举常量添加构造函数
下面我们将详细介绍这两种方式。
直接添加变量
在 enum
常量的声明中,我们可以直接添加变量。这种方式适用于需要为每个枚举常量定义不同的属性或状态的场景。例如,我们可以创建一个表示颜色的枚举,并为每个颜色添加一个 RGB 值的数组:
public enum Color {
RED(new int[] {255, 0, 0}),
GREEN(new int[] {0, 255, 0}),
BLUE(new int[] {0, 0, 255});
private int[] rgb;
private Color(int[] rgb) {
this.rgb = rgb;
}
public int[] getRgb() {
return rgb;
}
}
在上面的示例中,我们定义了一个 Color
枚举,并为每个颜色添加了一个 rgb
数组变量。通过枚举的构造函数,我们可以为每个枚举常量设置不同的 rgb
值,并通过 getRgb()
方法获取该值。
在 enum
类中定义实例变量和构造函数
在某些情况下,我们可能希望为所有枚举常量共享一个变量,或者为每个枚举常量提供相同的默认值。在这种情况下,我们可以在 enum
类中定义实例变量,并为每个枚举常量添加构造函数来初始化这些变量。
public enum Size {
SMALL("S"),
MEDIUM("M"),
LARGE("L");
private String abbreviation;
private Size(String abbreviation) {
this.abbreviation = abbreviation;
}
public String getAbbreviation() {
return abbreviation;
}
}
在上面的示例中,我们创建了一个 Size
枚举,并为每个大小添加了一个 abbreviation
字符串变量。通过枚举的构造函数,我们为每个枚举常量设置了相同的 abbreviation
值,并通过 getAbbreviation()
方法获取该值。
解决实际问题的示例
现在,让我们通过一个实际问题的示例来演示如何在 Java 的 enum
中添加变量。假设我们正在开发一个电商网站,需要为商品定义不同的折扣等级。每个折扣等级都有一个折扣比例和描述。
首先,我们可以创建一个 DiscountLevel
枚举,并为每个折扣等级添加折扣比例和描述:
public enum DiscountLevel {
GOLD(0.2, "Gold level discount"),
SILVER(0.1, "Silver level discount"),
BRONZE(0.05, "Bronze level discount");
private double discountPercent;
private String description;
private DiscountLevel(double discountPercent, String description) {
this.discountPercent = discountPercent;
this.description = description;
}
public double getDiscountPercent() {
return discountPercent;
}
public String getDescription() {
return description;
}
}
通过上述示例,我们创建了一个 DiscountLevel
枚举,并为每个等级添加了折扣比例和描述。通过枚举的构造函数,我们可以为