私のJavaプログラムでCollection.EMPTY_LISTを使用するジェネリックフレンドリーな方法はありますか?
自分で宣言できることはわかっていますが、JDKにこれを行う方法があるかどうか知りたいだけです。
何かのようなものusers = Collections<User>.EMPTY_LIST;
次のようにします。
List<User> users = Collections.emptyList();
Collections.emptyList();
から返されるリストの型は、代入の左辺によりと推測されます。String
ただし、この推論を行いたくない場合は、次のようにして明示的に定義できます。
List<User> users = Collections.<User>emptyList();
この特定の例では、これはほとんどの人にとって冗長に見えるかもしれません (実際、明示的な型引数を利用するコードはほとんど出回っていません) void doStuff(List<String> users)
。doStuff()
次のように明示的な型引数を指定して呼び出す場合:
doStuff(Collections.<String>emptyList());
空のリストを作成したら、毎回新しいリストを作成するのではなく、定数として保存することをお勧めします。
Collections.emptyList()
また、 と を使用するとパフォーマンス上の利点がありますがnew ArrayList(0)
、その差はおそらく小さいものです。emptyList() によって返されるリストは、不変の空のリストになるように最適化されています。たとえば、size() メソッドは、フィールド ルックアップや ArrayList が行うものではなく、単に 0 を返します。
List<User> users = Collections.emptyList();