为什么这个枚举在它自己的文件中声明。这样做有什么好处吗?另外我如何才能将其放入两个文件之一中。我真的不知道我在做什么。还请用简单的方式解释一下,因为这是教科书示例,而且我对 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;
}
}
为什么在 Java 中要在单独的文件中声明枚举?
你不have to声明一个enum
在一个单独的文件中。你可以这样做:
public class Temperature {
public enum ScaleName {celsius, fahrenheit, kelvin, rankine};
private double number;
private ScaleName scale;
public Temperature() {
number = 0.0;
scale = ScaleName.fahrenheit;
}
...
}
这与使枚举成为顶级类之间的唯一区别是您现在需要qualify当您在不同的类中使用枚举时的名称。
但到底发生了什么事在我的例子中与枚举是任何其他静态嵌套类时发生的情况没有什么不同。 (嵌套枚举是隐式静态的,因此我们不需要static
关键词。看JLS 8.9 https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.9.)
为什么这个枚举在它自己的文件中声明。
Because the code author chose to do it this way1.
这样做有什么好处吗?
是的。这意味着不必限定enum
使用它......在某些情况下,如果enum
如上嵌套。
实际上,Java 确实允许您将多个顶级类放入同一个源文件中前提是除一个类外,所有类都是“包私有”。然而,这样做通常被认为是不好的风格,并且对于某些工具链来说可能会出现问题......我听说过。
1 - If you want to know the real reason why the authors of the textbook chose to do it that way, you would need to ask them!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)