泛型的通配符:
?:代表任意的数据类型
使用方式:
不能创建对象使用,只能作为方法的参数使用
public class Demo05Generic {
public static void main(String[] args) {
ArrayList<Integer> list01 = new ArrayList<>();
list01.add(1);
list01.add(2);
ArrayList<String> list02 = new ArrayList<>();
list02.add("a");
list02.add("b");
printArray(list01);
printArray(list02);
// ArrayList<?> list03 = new ArrayList<?>();错误
}
//定义一个方法,能遍历所有类型的ArrayList集合,这是我们不知道ArrayList集合使用什么数据类型,可以使用泛型通配符?来接收数据类型
//注意:泛型没有继承概念
public static void printArray(ArrayList<?> list) {
//使用迭代器遍历集合
Iterator<?> it = list.iterator();
while(it.hasNext()) {
//it.next()方法,取出的元素是Object,可以接收任意的数据类型
Object o = it.next();
System.out.println(o);
}
}
}
import java.util.ArrayList;
public class Test02 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
list1.add("hello");
list1.add("world");
list1.add("java");
ArrayList<Integer> list2 = new ArrayList<>();
list2.add(10);
list2.add(20);
list2.add(30);
print(list1);
print(list2);
}
public static void print(ArrayList<?> list) {
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}