泛型通配符 ?
不知道使用什么类型来接收的时候,此时可以使用? ?表示未知通配符
此时只能接收数据,不能往该集合中存储数据
使用方式:
不能创建对象使用,只能作为方法的参数使用
定义一个方法,能遍历所有类型的ArrayList集合
这时候我们不知道ArrayList集合使用什么数据类型,可以用泛型的通配符?来接受类型
package Generic;
import java.util.ArrayList;
public class Generic2 {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
ArrayList<String> list2 = new ArrayList<>();
list2.add("adf");
list2.add("eee");
printArray(list1);
printArray(list2);
}
public static void printArray(ArrayList<?> arr) {
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));
}
}
}
泛型的上限限定: ? extends E 代表使用的泛型只能是E类型的子类/本身
泛型的下限限定: ? super E 代表使用的泛型只能是E类型的父类/本身