1.通配符:在泛型中,通配符可以接收多种类型的泛型数据
2.定义:<?>
3.作用:可以接收多种类型的泛型属性,提高代码的利用率
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class 通配符的使用 {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("你好");
arrayList.add("中国");
arrayList.add("我爱你");
ArrayList<Integer> arrayList2 = new ArrayList<>();
arrayList2.add(123);
arrayList2.add(456);
arrayList2.add(789);
通配符的使用 t = new 通配符的使用();
t.test(arrayList); //String类型的List传入test
System.out.println("--------------------");
t.test(arrayList2);//Integer类型的List传入test
}
//3.<?>可以接收多种类型的泛型属性,提高代码的利用率
public void test(List<?> list) {
Iterator<?> iterator = list.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
4.对于添加和获取数据的说明:
- <?> 中是不能使用add(),添加除了null以外的数据。
- <?> 类型 可以使用get(int index)获取数据
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
* 1.通配符:在泛型中,通配符可以接收多种类型的泛型数据
* 2.定义:<?>
* 3.作用:可以接收多种类型的泛型属性,提高代码的利用率
*
* 4.对于添加和获取数据的说明:
* - <?> 中是不能使用add(),添加除了null以外的数据。
* - <?> 类型 可以使用get(int index)获取数据
*
* 5.有限制条件的限制符的使用
* - <? extends A> 将A左为上限,可以传A以及A的子类
* - <? super A> 将A左为下限,可以传A以及A的父类
*/
public class 通配符的使用 {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("你好");
arrayList.add("中国");
arrayList.add("我爱你");
System.out.println("--------------------");
List<?> list3;
//1.通配符可以接收多种类型的泛型数据
list3=arrayList;
//4.1 <?> 中是不能使用add(),添加除了null以外的数据。
/* list3.add(123); 报错:不能添加数据
list3.add("123"); 报错:不能添加数据 */
list3.add(null); //注意:唯一可以添加的是null
//4.2 <?> 类型 可以使用get(int index)获取数据
Object object = list3.get(0);
System.out.println(object);
}
}
5.有限制条件的限制符的使用
- <? extends A> 将A左为上限,可以传A以及A的子类
- <? super A> 将A左为下限,可以传A以及A的父类
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class 通配符的使用 {
public static void main(String[] args) {
}
public void test() {
ArrayList<Object> list1 = new ArrayList<>();
ArrayList<Person> list2 = new ArrayList<>();
ArrayList<Student> list3 = new ArrayList<>();
//5.1 <? extends A> 将A左为上限,可以传A以及A的子类
List<? extends Person> l1 = null;
//5.2 <? super A> 将A左为下限,可以传A以及A的父类
List<? super Person> l2 = null;
// l1 = list1; 报错:因为Object超过了Person
l1 = list2;
l1 = list3;
l2 = list1;
l2 = list2;
// l2 = list3; 报错:因为Student低于了Person
}
}
class Person{
}
class Student extends Person{
}