15

私のJavaプログラムでCollection.EMPTY_LISTを使用するジェネリックフレンドリーな方法はありますか?

自分で宣言できることはわかっていますが、JDKにこれを行う方法があるかどうか知りたいだけです。

何かのようなものusers = Collections<User>.EMPTY_LIST;

4

3 に答える 3

31

次のようにします。

List<User> users = Collections.emptyList();

Collections.emptyList();から返されるリストの型は、代入の左辺によりと推測されます。Stringただし、この推論を行いたくない場合は、次のようにして明示的に定義できます。

List<User> users = Collections.<User>emptyList(); 

この特定の例では、これはほとんどの人にとって冗長に見えるかもしれません (実際、明示的な型引数を利用するコードはほとんど出回っていません) void doStuff(List<String> users)doStuff()次のように明示的な型引数を指定して呼び出す場合:

doStuff(Collections.<String>emptyList());
于 2008-10-03T23:18:55.023 に答える
1

空のリストを作成したら、毎回新しいリストを作成するのではなく、定数として保存することをお勧めします。

Collections.emptyList()また、 と を使用するとパフォーマンス上の利点がありますがnew ArrayList(0)、その差はおそらく小さいものです。emptyList() によって返されるリストは、不変の空のリストになるように最適化されています。たとえば、size() メソッドは、フィールド ルックアップや ArrayList が行うものではなく、単に 0 を返します。

于 2008-10-16T23:02:14.587 に答える
1
List<User> users = Collections.emptyList();
于 2008-10-03T23:20:24.383 に答える