为什么枚举类只能在Java中有私有构造函数?
每个枚举常量都是静态的。如果我们想表示一个名为 constant 的组,那么我们应该选择 Enum。因此我们可以使用枚举名称访问它。
没有构造函数的枚举:
enum Day{
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
带有构造函数的枚举:
enum Size {
SMALL("The size is small."),
MEDIUM("The size is medium."),
LARGE("The size is large."),
EXTRALARGE("The size is extra large.");
private final String pizzaSize;
// private enum constructor
private Size(String pizzaSize) {
this.pizzaSize = pizzaSize;
}
public String getSize() {
return pizzaSize;
}
}
为什么我们不能有一个公共枚举构造函数?
我们需要枚举构造函数是私有的,因为枚举定义了一组有限的值(SMALL、MEDIUM、LARGE)。如果构造函数是公开的,人们就有可能创造更多的价值。 (例如,无效/未声明的值,如 ANYSIZE、YOURSIZE 等)。
Java中的枚举包含固定的常量值。因此,没有理由拥有公共或受保护的构造函数,因为您无法创建枚举实例。另外,请注意内部枚举被转换为类。由于我们不能显式地创建枚举对象,因此我们不能直接调用枚举构造函数。
Java
enum PizzaSize {
// enum constants calling the enum constructors
SMALL("The size is small."),
MEDIUM("The size is medium."),
LARGE("The size is large."),
EXTRALARGE("The size is extra large.");
private final String pizzaSize;
// private enum constructor
private PizzaSize(String pizzaSize) {
this.pizzaSize = pizzaSize;
}
public String getSize() {
return pizzaSize;
}
}
class GFG {
public static void main(String[] args) {
PizzaSize size = PizzaSize.SMALL;
System.out.println(size.getSize());
}
}
输出
The size is small.