一个简单的基本数据类型类图
无边界通配符
? 通配符理解
我们知道ArrayList 是典型的泛型类,可以限制存储的元素的元素类型。
ArrayList< String>指定存入的元素时string类型
ArrayList< Integer>指定存储元素为Integer类型
但是如果只有我们在使用的时候才能明确知道存入类型时,就可以使用ArrayList<?> 来表示
通用的类型.
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("zhangsan");
List<Number> list2 = new ArrayList<>();
list2.add(3);
list2.add(4);
loop(list1);
loop(list2);
}
public static void loop(List<?> list){
for (int i =0 ; i<list.size() ; i++) {
System.out.println(list.get(i));
}
}
案例中的 ? 代表着限定通用类型, 或者理解为,代表可变的参数类型.
上边界通配符
? extends Number 代表从Number往下的子类或者孙类对象都是可以的
下边界通配符
? super Integer 代表从Integer 到 Object 所有对象都是可以的