我有一个枚举类型(比如CarModel
的参数),在整个应用程序(许多类)中使用。
public enum CarModel {
DIABLO,
P911,
DB7;
}
我有不同的方法以不同的方式使用这种CarModel
枚举类型,每个方法都有一个switch语句来根据枚举类型设置一些String
变量,然后再继续做其他事情。(例如,设置某个型号的制造商,或设置原产国等。这些结果在运行时是静态的)
问题是,如果我想向枚举中添加一个新模型,我需要转到每个方法,并扩展/修改switch语句来处理它的存在。这很容易导致人为错误和/或代码重复(如果不同的方法使用相同的switch语句)。
我希望使用静态方法,而不是到处使用switch语句,这些方法可以在单个位置进行编辑,并允许类似以下的行为:
String country = CarModel.DIABLO.getCountry() // returns Italy
String manufacturer = CarModel.P911.getManufacturer() // returns Porsche
对于枚举,这是可能的吗?(枚举甚至是做这件事的“正确”方式吗?
发布于 2012-07-24 20:00:20
你可以做这样的事情。
public enum CarModel {
DIABLO("Lamborghini", "Italy"),
P911("Porsche", "Germany");
private String manufacturer;
private String country;
private CarModel(String manufacturer, String country) {
this.manufacturer = manufacturer;
this.country = country;
}
public String getManufacturer() {
return manufacturer;
}
public String getCountry() {
return country;
}
}
发布于 2012-07-24 20:01:17
是的,完全正确。枚举可以有自己的方法,这些方法可以是特定于值的。它看起来是这样的:
enum CarModel {
P911 {
public String getManufacturer() { return "Porsche"; }
},
DB7 {
public String getManufacturer() { return "Aston Martin"; }
},
...
public abstract String getManufacturer();
}
当然,您可以添加更多方法。
发布于 2012-07-24 20:03:51
我建议将此信息直接添加到枚举中。
如下所示:
public enum CarModel {
DIABLO("Lambo"),
P911 ("Porsche");
private String manufacturer;
private CarModel(String manufacturer) {
this.manufacturer = manufacturer;
}
public String getManufacturer() {
return manufacturer;
}
}
在这个类中,您只需使用getManufacturer方法
https://stackoverflow.com/questions/11630343
复制相似问题