JAVA高階複習-有限制條件的萬用字元的使用
阿新 • • 發佈:2020-09-14
/** * 有限制條件的萬用字元的使用 */ public class GenericTest9 { /** * 結論: * ? extends A : * G<? extends A> 可以作為G<A> 和 G<B>的父類,其中B是A的子類 * ? super A : * G<? super A> 可以作為G<A> 和 G<B>的父類,其中B是A的父類 */ @Test public void test01() { List<? extends Person> list = null; List<? super Person> list2 = null; List<Man> list3 = new ArrayList<>(); list3.add(new Man("AA", 10)); List<Person> list4 = new ArrayList<>(); list4.add(new Person("AA")); List<Object> list5 = new ArrayList<>(); list = list3; // list = list4; //list5 不能 自動向上轉型為list // list = list5; Person person = list.get(0); //編譯不通過 // Man man = list.get(0); //list3 不能 自動向上轉型為list2 // list2 = list3; list2 = list4; list2 = list5; Object object = list2.get(0); //編譯不通過 // Person p = list2.get(0); //寫入資料: // 編譯都不通過 // list.add(new Man("BB")); // list.add(new Person()); // list.add(new Object()); list2.add(new Man("CC")); list2.add(new Person()); } } class Person { String name; public Person() { } public Person(String name) { this.name = name; } } class Man extends Person{ Integer age; public Man(String name) { super(name); } public Man(String name, Integer age) { super(name); this.age = age; } }