整个问题都在标题中。例如:
enum enumTest {
TYPE1(4.5, "string1"), TYPE2(2.79, "string2");
double num;
String st;
enumTest(double num, String st) {
this.num = num;
this.st = st;
}
}
构造函数可以使用default或private
修饰符,但如果给出public
或protected
修饰符,则会给我一个编译器错误。
发布于 2010-09-08 09:53:37
枚举包含一组固定的值,这些值在编译时必须都是已知的。在运行时创建新的文本是没有意义的,如果构造函数是可见的,这将是可能的。
发布于 2018-07-16 09:14:55
这是因为枚举是Java包含固定的常量值。因此,没有必要使用公共或受保护构造函数,因为您不能创建枚举实例。
另外,请注意在内部enum被转换为class,如下所示。
enum Color {
RED, BLUE, YELLOW;
}
这将在内部转换为:
public final class Color {
private Color() {}
public static final Color RED = new Color();
public static final Color BLUE = new Color();
public static final Color YELLOW = new Color();
}
因此,每个枚举常量都表示为一个枚举类型的对象。因为我们不能显式地创建枚举对象,所以我们不能直接调用枚举构造函数。
https://stackoverflow.com/questions/3664077
复制相似问题