-1

帰りに面白い質問があります

私は列挙型を持っています

public enum Gender{

    Yes(Constants.male()), female(Constants.female());

    private final String value;

    private Gender(String option){
          value = option;
    }
}

..値をカプセル化する必要がありますか、それとも単にパブリックとして宣言する必要がありますか?

実行時に値を初期化することの欠点はありますか?

4

1 に答える 1

1

あなたの場合、大きな違いはないはずStringです。クラスは不変です。ただし、カプセル化が適切な方法であるため、これをお勧めします。

「ランタイム」の初期化に関しては、あなたが何を意味するのかわかりません。列挙型は本質的にシングルトンであるため、クラスロード時に初期化されます。これは実行時ですが、欠点はありません。特に、値をハードコーディングしたくない場合。

編集

@GyroGearlessは、フィールドをとして宣言する必要があると指摘しているため、コンストラクターで設定された定数であるため、finalそうでない場合でも、これがベストプラクティスです。public

于 2013-03-07T12:37:48.343 に答える