gpt4 book ai didi

java - 枚举实例后括号中的数字

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:00 26 4
gpt4 key购买 nike

我正在看一本关于编程的书,我遇到了这样一件事:

public static enum Month {
JANUARY(1),
FEBRUARY(2),
MARCH(3),
APRIL(4),
MAY(5),
JUNE(6),
JULY(7),
AUGUST(8),
SEPTEMBER(9),
OCTOBER(10),
NOVEMBER(11),
DECEMBER(12);
Month(int index) {
this.index = index;
}

枚举实例后括号中的数字是什么意思?它是枚举构造函数吗?

最佳答案

What does a number in parentheses mean after an enum instance? Is it an enum constructor?

JANUARY(1)FEBRUARY(2) 等...确实是枚举构造函数。

但是在枚举中指定构造函数不需要数字。这里你有一个数字,但它可以是任何其他东西,它也可以根据需要有尽可能多的参数。

请注意,实际上枚举声明缺少 index 字段,无法编译。
这是正确的:

public static enum Month {
JANUARY(1),
FEBRUARY(2),
MARCH(3),
APRIL(4),
MAY(5),
JUNE(6),
JULY(7),
AUGUST(8),
SEPTEMBER(9),
OCTOBER(10),
NOVEMBER(11),
DECEMBER(12);

private int index;

Month(int index) {
this.index = index;
}
}

我要补充一点,枚举首先是一个类。因此,每个枚举值(此处为 JANUARYFEBRUARY、...)都将通过调用类构造函数来实例化。
对于任何类,由于您没有定义构造函数,编译器将生成一个没有参数的默认值。
所以它是有效的:

public static enum Fruit {
APPLE(),
ORANGE();

Fruit() {
}
}

这也是有效的:

public static enum Fruit {
APPLE(),
ORANGE();
}

但是对于构造函数中没有参数的枚举,我们通常使用为枚举保留的这种方便的语法:

public static enum Fruit {
APPLE, // with no parenthesis
ORANGE; // with no parenthesis
}

关于java - 枚举实例后括号中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42833346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com