gpt4 book ai didi

java - 为什么枚举在单独的文件中声明,在 Java 中?

转载 作者:太空狗 更新时间:2023-10-29 22:42:33 26 4
gpt4 key购买 nike

为什么这个枚举在它自己的文件中声明。这有什么好处吗?另外我怎么能把它放在 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;
}
}

最佳答案

Why is an enum declared in a separate file, in Java?

您不必在单独的文件中声明一个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;
}
...
}

这与使枚举成为顶级类之间的唯一区别是,当您在不同的类中使用它时,您现在需要限定枚举的名称。

但是在我的示例中发生的情况与枚举是任何其他静态嵌套类时发生的情况没有什么不同。 (嵌套枚举是隐式静态的,因此我们不需要 static 关键字。参见 JLS 8.9。)


Why is this enum declared in its own file.

因为代码作者选择这样做1

Is there an advantage to this?

是的。这意味着不必限定 enum 就可以使用它......在某些情况下,如果 enum 如上所述嵌套,则必须这样做。


实际上,Java 确实允许您将多个顶级类放入同一个源文件中,前提是除了其中一个类之外的所有类都是“包私有(private)的”。然而,这样做通常被认为是糟糕的风格,并且对于某些工具链来说可能会有问题……我听说过。


1 - 如果您想知道教科书的作者选择那样做的真正原因,您需要问他们!

关于java - 为什么枚举在单独的文件中声明,在 Java 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14431472/

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