Java の総称型と Eclipse の警告と設計

以下のようなフィールドがあったとします。

    private final List<String>[] list = new List[] {
        new ArrayList<String>(),
    };

このコードを Eclipse の標準設定で書くと、以下のような警告が出ます。

Type safety: The expression of type List needs unchecked conversion to conform to List

型安全じゃない、ということなんですね。

これを解決する方法はひとつしかありません*1

    @SuppressWarnings("unchecked")
    private final List<String>[] list = new List[] {
        new ArrayList<String>(),
    };

@SuppressWarnings("unchecked") を使うという消極的な方法ですが、これしかありません。


そもそも、以下のコードがコンパイルできないのが問題です。

    private final List<String>[] list = new List<String>[1];

以下のようなエラーが出力されます。

Cannot create a generic array of List

ジェネリックな配列は生成できないという制限があるので、@SuppressWarnings("unchecked") を使いたくないのであれば、リストの配列はやめて、リストのリストにするなど、設計を見直す必要があります。

*1:間違ってたら指摘ください