4

などに使用する文字列配列がありますSpinner

<string-array name="Animal">
    <item >Cat</item>
    <item >Dog</item>
    <item >Rabbit</item>
    <item >Bird</item>
</string-array>

ユーザーが入力または選択した値を格納するコンテナ クラスがありますSpinner。メンバー変数は、ほとんどがプリミティブまたはEnum.

public class Container {
    protected int index;
    protected int age;
    protected String name;
    protected Animal pet;
}

これは、Enum クラスの 1 つがどのように定義されているかです (これはより単純なバージョンであり、私の実際のコードでは、さらにいくつかのメソッドまたは変数があり、各 Enum インスタンスは CAT のように大文字です)。

public enum Animal {
    Cat, Dog, Rabbit, Bird,     
}

Enumご覧のとおり、XMLでほぼ同じことを繰り返しています。DRYによると、それはあまり良くありません。どちらを削除する必要があり、どのように削除する必要がありますか?

Enumこの時点で、 XML よりも機能的に汎用性が高く、維持しやすいので、維持することに傾いています。私が懸念する可能性のある唯一の問題は、そのパフォーマンスです。より多くのメモリと追加のコーディング作業が必要になる場合があります。

4

1 に答える 1

1

重複を避けたい場合は、Enum を保持してから、 を使用してプログラムでスピナーを設定する必要がありますfor(Animal animal:Animal.values()) {...}

Enum 名をキーとして使用して、ローカライズされたラベルなどを取得できます。

于 2013-01-08T16:41:08.420 に答える