以下三个签名有什么区别?
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
含义。foo
我的问题是,bar
和之间是否有区别baz
。我应该使其中一个参数不变,而另一个参数在适当的方向上变体,还是应该使它们都变体?这有什么不同吗?