2011-07-21 9 views
8

ImmutableList.of(E[])は、ImmutableList.copyOf()の方が非推奨であることに気付きました。なぜなら、生の配列が他の場所で使用されていると本当に不変にすることはできないという明白な理由です。guutable:ImmutableList.of(E [])のベストプラクティス

配列を返すメソッドがあり、そのメソッドが配列への参照を保持しておらず、コードが配列以外の配列への参照に保持されていないことがわかっている場合ImmutableList.of()に渡しますか?

I ...

  • ImmutableList.of(E[])(メソッドが離れて行きますので、悪いアイデアのように思える)
  • 使用を継続して使用するべきCollections.unmodifiableList(Arrays.asList())
  • ImmutableList.copyOf()を使用する - これは最高のアイデアのように思えますパフォーマンス/リソースの問題が発生しない場合は、コピーは不要です。

答えて

16

ImmutableList.of(E[])これは直接与えられた配列を格納しておらず、保存されていません(クラスのポイントを破棄するには不変ではありません)。命名理由のために非難されました。あなたは、実装を見てみた場合、それは次のとおりです。

public static <E> ImmutableList<E> of(E[] elements) { 
    return copyOf(elements); 
} 

だから私のアドバイスは、単に一般的にImmutableList.copyOf()を使用することです。あなたが内部使用などの配列をラッピングするだけの場合は、コピーを保存してArrays.asListを使用してください。ただし、APIの場合はImmutableListが好きです。

関連する問題