パラメータとしてCollection<T>
を取得し、要素(マッピング)で何かを行い、Collection<R>
を返す汎用メソッドを作成したいとします。 これは、問題ではありません、次の宣言で:今すぐJava generics、nesting型パラメータ
public <R,T> Collection<R> foo(Collection<T> c);
、私はパラメータの同じ型のコレクションを返すために私の方法を強制したいので、リターンをキャストする必要がなくなります値を特定のコレクションに追加します。このようなもの:
public <R, T, S extends Collection> S<R> foo(S<T> c);
悲しいことに、これはコンパイルされません。
これは何とかできますか?これを行う正しい方法は何ですか?
あなたは型パラメータトークンをパラメータ化することはできません。(あなたがpolutedヒープを作成している、Cを再利用することはできません)それを行うの
一つの方法は、型を強制収集のためのサプライヤーを提供します。 '...、S extends Collection'と '(S c)'のようなものがあります。 –
RとTの関係は? – Powerlord
@Powerlord、私はT-> RタイプのMapperを適用したいと思います。 TとRの間には関係がありません。 –