我有一个如下课程:
public class Prefs {
public static final int PREF_NAME = 0;
public static final int PREF_SURNAME = 1;
public static final int PREF_LOCATION = 2;
String[] defaults = { "unknown", "unknown", "nowhere" }
String[] prefs;
public String getPref(int id) {
return prefs[id];
}
}
所以我可以使用以下语法:
Prefs p = new Prefs();
p.setDefaults() // irrelevant code not included
p.getPref(Prefs.PREF_LOCATION); // much more readable than getPref(2);
这种做法是否正确?有没有更好的选择来完成这个?
编辑:请提供一个简单的例子。
答案 0 :(得分:1)
我认为enum
正是你所需要和完美的。
答案 1 :(得分:0)
如果'prefs'中的元素列表是动态的,您可能需要考虑使用哈希表: -
http://docs.oracle.com/javase/6/docs/api/java/util/Hashtable.html
这将允许您拥有一个引用特定元素的键。
(来自javadoc)此示例创建数字哈希表。它使用数字的名称作为键:
Hashtable numbers = new Hashtable();
numbers.put("one", new Integer(1));
numbers.put("two", new Integer(2));
numbers.put("three", new Integer(3));
要检索号码,请使用以下代码:
Integer n = (Integer)numbers.get("two");
if (n != null) {
System.out.println("two = " + n);
}
或者,如果要随机访问,可以使用ArrayList。
http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html
答案 2 :(得分:0)
当值不变时,使用enum
或ValuedEnum
(org.appache.commons)。
在ValuedEnum中,您可以提供自定义文本,对于值,标准枚举使用枚举字段名称作为文本。
如果您正在使用java枚举,请考虑使用您明确为枚举赋值的方法(通过为枚举构造函数提供参数“value”)。
public enum Currency {
PENNY(1), NICKLE(5), DIME(10), QUARTER(25);
private int value;
private Currency(int value) {
this.value = value;
}
};
当你想确保值永远不会改变时(例如persitence),这个Valied enum方法是必要的。 java ordinal()无法提供。