Java 有没有办法让枚举返回不带方法的值
如果这是我的枚举:Java 有没有办法让枚举返回不带方法的值,java,enums,Java,Enums,如果这是我的枚举: public enum Planet { MERCURY (3.303e+23), NEPTUNE (1.024e+26); private final double mass; // in kilograms Planet(double mass) { this.mass = mass; } private double mass() { return mass; } }
public enum Planet {
MERCURY (3.303e+23),
NEPTUNE (1.024e+26);
private final double mass; // in kilograms
Planet(double mass) {
this.mass = mass;
}
private double mass() {
return mass;
}
}
我可以访问以下值:
Planet.MERCURY.mass();
是否有机会将枚举定义为“double”并让
Planet.MERCURY;
返回一个双精度?
无论如何,我主要感兴趣的是调用的外观,以确保代码可读性。否。这在枚举的Java表示中是不可能的。就我个人而言,我觉得Planet.MERCURY.mass()更具可读性
我想到的唯一一件稍微增加可读性的事情是使mass
公共最终版
而不是私人最终版
,并参考Planet.MERCURY.mass
,但我会重新考虑一下。您可以定义类而不是枚举:
public static class Planet {
public static final double MERCURY = 3.303e+23;
}
现在您可以获得以下值:
Planet.MERCURY
但就我所知,使用enum是不可能的。如果您对外观感兴趣,那么我强烈建议您使用当前的Planet.MERCURY.mass()实现。你无法获得更多的可读性。我也倾向于尽量缩短代码。但多年来,我发现这只会带来更多的问题。如果你想在长公式中使用汞的质量,你想保持一定的可读性,你可以在本地这样做
double mMerc = Planet.MERCURY.mass();
// other local temp variables
double distance = Math.sqrt(G*mMerc*mRocket/F);
大概吧。这种方法还允许您以后非常轻松地添加更多常量(如distanceToSun、SurfacetTemperature、偏心率、反照率等)。您也可以将质量作为字符串返回,但它仅适用于字符串串联和需要字符串作为参数的方法,如
System.out.println()
或String.format()
我同意前面的回答/评论,即verbose.mass()
方法是一种更具可读性/可维护性的解决方案
此外,您可以避免使用enum,一个declare constans容器类,如下所示:
public class Planet {
public final static double MERCURY = 3.303e+23;
public final static double NEPTUNE = 1.024e+26;
// ....
// Make 'Planet' not easily instantiable for others
private Planet() {}
}
像这样,你可以毫无问题地使用Planet.MERCURY作为替身,但如果只有一个参数,我只想修复一组对象并给它们“组”和“名称”,我不需要这些方法…@Wojtek最终公开有什么缺点?@Frank如果将来某个时候你会决定质量()应该还一些其他单位,而不是公斤。如果你有一个getter,你可以很容易地在方法体中实现该逻辑。@Wojtek我可以简单地添加另一个getter。。。但总的来说,我并不介意那些括号,我只是错过了通过调用object来获得值的可能性,我想到了这一点,但由于缺乏可用性(例如switch)而放弃了它
public class Planet {
public final static double MERCURY = 3.303e+23;
public final static double NEPTUNE = 1.024e+26;
// ....
// Make 'Planet' not easily instantiable for others
private Planet() {}
}