第1个回答 推荐于2017-11-27
如果知道<? extends A>的用法的话,<? super A>的用法就不难理解了。
<? extends A>表示类型必须是A或者A的子类
<? super A>表示类型必须是A或者A的超类
如:
已知Object是Test的父类,TestChild是Test的子类,那么
对于:
public void tde(List<? super Test> list) {
}
tde(new ArrayList<Test>()); //可以
tde(new ArrayList<Object>()); //可以
tde(new ArrayLIst<TestChild>); //编译错误
对于:
public void tde(List<? extends Test> list) {
}
tde(new ArrayList<Test>()); //可以
tde(new ArrayList<Object>()); //编译错误
tde(new ArrayLIst<TestChild>); //可以本回答被提问者和网友采纳