A
クラスB
が実装するインターフェースがあります。
次の一般的な方法が機能します
public static <T, U extends T> List<T> listFactory(Collection<U> source) {
return new ArrayList<T>(source);
}
しかし
public static <T> List<T> listFactory(Collection<? extends T> source) {
return new ArrayList<T>(source);
}
私が出力をに向けているとき、しません(コンパイルエラー、タイプの不一致)
List<A> tester = listFactory(B.defaultCollectionFactory(3));
defaultCollectionFactory(int count)
B
デフォルトのラベル付けスキームを使用して、sのコレクションを静的に提供します。
それがなぜであるかについての洞察はありますか?一般的なUとワイルドカードは同じことをしているようです。