次の 3 つの署名の違いは何ですか?
static <T> void foo(List<T>, Comparator<? super T>);
static <T> void bar(List<? extends T>, Comparator<T> );
static <T> void baz(List<? extends T>, Comparator<? super T>);
私はジェネリックで何extends
を意味するかを知っています。私の質問は、とsuper
の間に違いがあるかどうかです。パラメータの 1 つを不変にし、他の 1 つを適切な方向に変更する必要がありますか、それとも両方を変更する必要がありますか? 違いはありますか?foo
bar
baz