-1

我有一个像下面这样的类:

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);

这种方法正确吗?有没有更好的选择来做到这一点?

编辑:请提供一个简单的例子。

4

3 回答 3

1

我认为enum这正是您需要和完美的。

于 2013-03-06T08:51:42.567 回答
0

如果您的“首选项”中的元素列表将是动态的,您可能需要考虑使用哈希表:-

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

于 2013-03-06T08:53:23.253 回答
0

当值不变时,使用enumor (org.appache.commons)。 在 ValuedEnum 中,您可以提供自定义文本,对于值,标准枚举使用枚举字段名称作为文本。ValuedEnum

如果您使用的是 java 枚举,请考虑使用为枚举显式分配值的方法(通过提供带有参数“值”的枚举构造函数)。

javarevisited

public enum Currency {
         PENNY(1), NICKLE(5), DIME(10), QUARTER(25);
         private int value;

        private Currency(int value) {
                this.value = value;
        } 

};

当您想确保值永远不会改变时(例如,为了持久性),这种 Valied 枚举方法是必要的。java ordinal() 无法提供。

于 2013-03-06T08:53:49.197 回答