Java:在对象中存储属性

时间:2013-03-06 08:49:27

标签: java arrays constants

我有一个如下课程:

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

这种做法是否正确?有没有更好的选择来完成这个?

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

3 个答案:

答案 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)

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

如果您正在使用java枚举,请考虑使用您明确为枚举赋值的方法(通过为枚举构造函数提供参数“value”)。

来自javarevisited

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()无法提供。