package generic; import java.util.*; public class GenericTest { /* * 1.泛型在继承方面的体现,虽然A 是 B 的父类,但是G<A> 和 G<B> 不具有子父类关系,二者是并列关系 * A 是 B的父类, A<G> 和 B<G> 具有子父类关系 * * */ public void test() { } /* * 2.通配符 ? * A 是 B的父类,G<A>和G<B>是并列关系,二者共同父类是G<?> * 并且G<?>内不能再添加数据 ,除了null * */ public void test3() { List<Object> list1 = null; List<String> list2 = null; List<?> list = null; List<String> list3 = new ArrayList<>(); list3.add("AA"); list3.add("BB"); list3.add("CC"); list = list3; //添加:只能加null list.add(null); //读取:只能用Object去读取 Object obj = list.get(0); } public void print(List<?> list) { Iterator<?> iterator = list.iterator(); while(iterator.hasNext()) { Object obj = iterator.next(); System.out.println(obj); } } /* * ? extends Person: Person及其子孙类 * ? super Person: Person及其父类 * */ public void test4() { List<? extends Person> list1 = null; List<? super Person> list2 = null; List<Student> list3 = null; List<Person> list4 = null; List<Object> list5 = null; //赋值: list1 = list3; list1 = list4; //list1 = list5; //list2 = list3; list2 = list4; list2 = list5; //获取 list1 = list3; Person p=list1.get(0); list2 = list4; Object obj = list2.get(0); //添加 } } class Person { } class Student extends Person{ }
1