ヘルパーメソッド:キャプチャワイルドカード
public class WildcardFixed {
void foo(List<?> i) {
fooHelper(i);
}
// Helper method created so that the wildcard can be captured
// through type inference.
private <T> void fooHelper(List<T> l) {
l.set(0, l.get(0));
}
}
まず、th EYリスト入力パラメータ(i
)はObject
と見られていると言う:
この例では、コンパイラは、Object型の あるとして
i
入力パラメータを処理します。
なぜi.get(0)
はObject
を返しません。それがすでにそのように渡されたのであれば?
さらに、<T>
を使用してヘルパーメソッドを使用する必要がある場合、<?>
を使用する点は何ですか?推測することができる直接T
を使用して良くないでしょうか?
これはEclipseが私に与えたものです: 'List型のメソッドセット(int、capture#1?)は引数には適用できません(int、capture#2-of ?) 'もっとばかげて聞こえます。 –
私は別の質問のためのワイルドカードキャプチャを説明する[回答](http://stackoverflow.com/questions/30797805/understanding-a-captured-type-in-java/30798066#30798066)を書いたばかりです。その情報はこの質問にも関係しているようです。 – Lii