1

ACollectionは、Iterable含まれているかどうかを確認し、要素を追加または削除できるサイズの です。継承Iterableしてサイズを持つオブジェクトがありますが、コレクションの他の機能はありません。Collection「サポートされていない」例外のあるメソッドを実装したくありません。

オブジェクトを拡張できるIterableとの間に一般的に使用される中間クラスはありますか? Collection「SizedIterable」のようなものですか?それとも、より一般的に、適切なイディオムですか?

注: はい、実際にメンバーシップを確認することはできませんが、サイズがあります。

4

2 に答える 2

1

短い答えはノーです。

長い答え: このインターフェースは必要ですか? 何に使う予定ですか?これと同じ (かなり変わった) プロパティを持つさまざまなクラスがいくつかあり、それに依存するいくつかのメソッドがない限り、このインターフェイスの明らかな必要性は考えられません。

このオブジェクトを標準ライブラリ関数/クラスに渡す予定はありますか? これらのメソッドは実際に size() を呼び出すのでしょうか?

その場合は、コレクションを実装するだけで、必要に応じて add()/remove()/contains()/etc の操作を行わない必要があります。

そうでなく、本当にこのインターフェースが必要な場合は、Iterable を拡張するのが良い方法です。

例えば

public interface SizedIterable<T> extends Iterable<T> {
    public int size();
}
于 2012-10-03T18:55:28.067 に答える