1

最終フィールドをさまざまな方法で初期化したい。したがって、列挙型を作成し、それを切り替えます。

    public enum TYPE {
        A,
        B,
    }

また、仲間のプログラマーが新しい列挙定数を追加してスイッチを更新するのを忘れた場合に警告するためのアサーションを使用して、デフォルトのケースをスイッチに追加しました。

        default:
            assert false : "missing TYPE detected";

しかし、Java は私の議論の欠陥を検出し、空白のフィールドが初期化されていない可能性があると不平を言います。この状況にどのように対処すればよいですか?

public class SwitchExample
{
    public enum TYPE {
        A,
        B,
    }

    private final int foo;

    public SwitchExample(TYPE t)
    {
        switch (t) {
        case A:
            foo = 11;
            break;

        case B:
            foo = 22;
            break;

        default:
            assert false : "missing TYPE detected";
        }

        // The blank final field foo may not have been initialized
    }
}
4

4 に答える 4