【发布时间】:2013-10-25 23:01:48
【问题描述】:
基本上我所做的是为州写一个枚举,我不仅希望能够像访问州一样访问它们,而且还希望访问它们的缩写以及它们是否是原始殖民地。
public enum States {
...
MASSACHUSETTS("Massachusetts", "MA", true),
MICHIGAN("Michigan", "MI", false),
...; //so on and so forth for all fifty states
private final Object[] values;
States(Object... vals) {
values = vals;
}
public String FULL() {
return (String) values[0];
}
public String ABBR() {
return (String) values[1];
}
public boolean ORIGINAL_COLONY(){
return (boolean) values[2];
}
}
这似乎按我的预期工作。我可以
System.out.println(States.ALABAMA); // Prints "ALABAMA"
System.out.println(States.ALABAMA.FULL()); // Prints "Alabama"
System.out.println(States.ALABAMA.ABBR()); // Prints "AL"
System.out.println(States.ALABAMA.ORIGINAL_COLONY());// Prints "false"
对于这种涉及枚举的特定场景,这是最好的方法还是有更好的方法来设置和格式化这个枚举?在此先感谢大家!
【问题讨论】:
-
方法不应该全部大写。
-
连枚举都没有?通常我使用驼峰式大小写,但我认为在引用永远不会更改的静态内容时,它应该全部大写,就像枚举本身一样。
-
如果你真的有像
name、abbreviation、isOriginalColony这样的字段并且有一个构造函数采用(String, String, boolean),那就更好了。这样,它更具可读性,并且还有助于防止有人以错误的顺序添加其他状态的参数。 -
@SonofLysander 方法本身应该始终是驼峰式的。我只是从未见过枚举和常量的全部大写(例如,
Math.PI)。 -
(我也看到了所有不是编译时常量的
static final引用的大写,尽管我个人不喜欢这样。例如,public static final FOO = System.getProperty("foo"))