当方法中需要自己使用泛型参数时,就要定义? extends T
比如 void f(ArrayList<? extends Person>){方法中使用Person对象来操作容器中元素}
当方法需要对外界提供参数时,就要定义? super T
比如,Comparator接口中的compare方法(T,T),因为是向compare方法传递参数,所以必须要Comparator<? super T>,这样T类型才能传递给compare方法,要是Comparator<? extends T>,
那么假如要比较Student,调用compare()方法,结果它限定的参数类型是Student的子类,无法传递。 |
|