0

開発中、私は空のリストを返そうとしていました。

public Collection<?> getElements() {
    // return elements
}

私は簡単な方法を探しました。私の最初のアイデアは、たとえば要素なしでArrayListを作成し、それを返すことでした。次の例のように:

public Collection<?> getElements() {
    return new ArrayList<?>();
}

私にとっては、空のリストにはオーバーヘッドが大きすぎます。

4

1 に答える 1

2

上記の「問題」には本当に簡単な解決策があります。

public Collection<?> getElements() {
    return Collections.EMPTY_LIST;
}

空のリストを返します。

注意:不変
のオブジェクトを返します!編集できないオブジェクトが必要な場合にのみ使用できます。

型安全性型
安全性リストを取得したい場合は、次の例を使用する必要があります[ 1 ]。

List<String> s = Collections.emptyList();

次の3種類のインターフェイスがサポートされています。

  • リスト

    List l = Collections.EMPTY_LIST;
    List<String> s = Collections.emptyList();
    
  • 地図

    Map m = Collections.EMPTY_MAP;
    Map<String> ms = Collections.emptyMap();
    
  • セット

    Set s = Collections.EMPTY_SET;
    Set<String> ss = Collections.emptySet();
    

知らせ:

このメソッドの実装では、呼び出しごとに個別のXXXオブジェクトを作成する必要はありません。この方法を使用すると、同じ名前のフィールドを使用する場合と同等のコストがかかる可能性があります。(この方法とは異なり、フィールドは型安全性を提供しません。)

于 2012-08-31T11:05:50.360 に答える