-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

'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

于 2013-03-06T08:53:23.253 に答える
0

値が変更されない場合は、enumまたは(org.appache.commons)を使用します。 ValuedEnumでは、カスタムテキストを提供できます。値の場合、標準の列挙型は列挙型フィールド名をテキストとして使用します。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;
        } 

};

このValied列挙型アプローチは、値が決して変更されないようにする場合に必要です(たとえば、永続性など)。java ordinal()はそれを提供できません。

于 2013-03-06T08:53:49.197 に答える