通配符的使用
public void fun4() {
List<Integer> integerList=new ArrayList<Integer>();
print(integerList);
List<String> stringList=new ArrayList<String>();
print(stringList);
}
//问号代表通配符
/**
* 通配符只能出现在左边!
* List<? extends Object> list=new ArrayList<String>();
* 问号不能出现在new那一块;?表示值类型不确定,调用时确定
* @param list
*/
public void print(List<? extends Object> list) {
/**
* 当使用通配符,对泛型类中的参数为泛型的方法起到副作用,不能再使用
* 当使用通配符时,泛型类中的返回值为泛型方法,也作废
* 好处:可以使泛型类型更加通用,尤其时调用方法
*/
}
/**添加限定
* 只能使用Number类型和子类型
* @param list
*/
public void print1(List<? extends Number> list) {
/**
* 参数为泛型方法是不能再使用
* 返回值为泛型的方法可用
*/
Number number=list.get(0);
}
public void print2(List<? extends Integer> list) {
/**
* 参数为泛型方法是能再使用
* 返回值为泛型的方法不可用
*/
}