为什么这个枚举在它自己的文件中声明。这有什么好处吗?另外我怎么能把它放在 2 个文件之一中。我真的不知道我在做什么。也请用简单的方式解释一下,因为这是一个教科书示例,而且我对 Java 还很陌生。
秤名.java
enum ScaleName {celsius, fahrenheit, kelvin, rankine};
温度.java
class Temperature {
private double number;
private ScaleName scale;
public Temperature() {
number = 0.0;
scale = ScaleName.fahrenheit;
}
public Temperature(double number) {
this.number = number;
scale = ScaleName.fahrenheit;
}
public Temperature(ScaleName scale) {
number = 0.0;
this.scale = scale;
}
public Temperature(double number, ScaleName scale) {
this.number = number;
this.scale = scale;
}
public void setNumber(double number) {
this.number = number;
}
public double getNumber() {
return number;
}
public void setScale(ScaleName scale) {
this.scale = scale;
}
public ScaleName getScale() {
return scale;
}
}
使用温度.java
class Temperature {
private double number;
private ScaleName scale;
public Temperature() {
number = 0.0;
scale = ScaleName.fahrenheit;
}
public Temperature(double number) {
this.number = number;
scale = ScaleName.fahrenheit;
}
public Temperature(ScaleName scale) {
number = 0.0;
this.scale = scale;
}
public Temperature(double number, ScaleName scale) {
this.number = number;
this.scale = scale;
}
public void setNumber(double number) {
this.number = number;
}
public double getNumber() {
return number;
}
public void setScale(ScaleName scale) {
this.scale = scale;
}
public ScaleName getScale() {
return scale;
}
}
原文由 user1943931 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不必在单独的文件 中 声明
enum
。你可以这样做:这与使枚举成为顶级类之间的唯一区别是,当您在不同的类中使用它时,您现在需要 限定 枚举的名称。
但是 我的例子 中发生的事情与枚举是任何其他静态嵌套类时发生的事情没有什么不同。 (嵌套枚举是隐式静态的,因此我们不需要
static
关键字。请参阅 JLS 8.9 。)因为代码作者选择这样做1 。
是的。这意味着不必限定
enum
就可以使用它……在某些情况下,如果enum
如上嵌套,则必须这样做。实际上,Java 确实允许您将多个顶级类放入同一个源文件 中,前提是 除了一个类之外的所有类都是“包私有的”。然而,这样做通常被认为是糟糕的风格,并且对于某些工具链来说可能会有问题……我听说过。
1 - 如果你想知道教科书的作者选择那样做的 真正 原因,你需要问他们!