1. ホーム
  2. java

[解決済み] JavaでIterable<T>とCollection<T>を比較した場合、どのような場合にパラメータを受け取るべきでしょうか?

2023-07-28 09:59:23

質問

を使用する際の注意点は何ですか? Iterable<T> vs. Collection<T> をJavaで使うか?

例えば、主に Foo のコレクションと、関連するいくつかのメタデータを含むことに主眼を置いた型を実装することを考えてみましょう。この型のコンストラクタは、オブジェクトリストを一度だけ初期化することができます。(メタデータは後で設定できます。) このコンストラクタはどのような型を受け入れるべきでしょうか。 Iterable<Foo> または Collection<Foo> ?

この決定にはどのような考慮が必要ですか?

などのライブラリ型が示すパターンに従って ArrayList (などのライブラリ型(これは任意の Collection が、しかし ではなく an Iterable ) を使用するように導かれるでしょう。 Collection<Foo> .

しかし、なぜ Iterable<Foo> で十分だと思うのですが。なぜより高度な機能を要求するのでしょうか ( Collection )を消費者に要求するのでしょうか? Iterable )?

どのように解決するのですか?

多くのコレクションタイプは、以前から存在する Iterable<T> (これは 1.5 で導入されました) よりも前に存在していました。 Iterable<T> と同様に Collection<T> を追加しましたが、既存のコンストラクタを変更することは、破壊的な変更になります。

個人的には Iterable<T> を使います。呼び出し側にとってより柔軟であり、特に、これによって 比較的 Google Java Collections (そして間違いなく同様のライブラリ) を使用して、フィルタリングや投影などを簡単に行うことができます。