为什么枚举类只能在 Java 中有私有构造函数?
原文:https://www . geesforgeks . org/why-enum-class-can-have-a-private-constructor-only-in-Java/
每个枚举常数都是静态的。如果我们想表示一个名为常量的组,那么我们应该选择枚举。因此,我们可以通过使用枚举名称来访问它。
没有构造函数的枚举:
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;
}
}
为什么不能有一个公共的枚举构造函数?
我们需要枚举构造函数是私有的,因为枚举定义了一组有限的值(小、中、大)。如果建造者是公众,人们可能会创造更多的价值。(例如,无效/未声明的值,如 ANYSIZE、YOURSIZE 等。).
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.
版权属于:月萌API www.moonapi.com,转载请注明出处