主函數
package typeWildcardTop;import java.util.ArrayList;public class typeWildcardTopTest {/**/public static void main(String[] args) {
// test1();test2();}/*測試showList接收ArrayList類型 ArrayList接收各種類型參數創建animals cats mincats集合 傳入show輸出*/public static void test1(){ArrayList<Animals> animals = new ArrayList<>();ArrayList<Cats> cats = new ArrayList<>();ArrayList<minCats> minCats = new ArrayList<>();/*showList 接收ArrayList類型!!! ArrayList接收類型參數 最后形成接收各種類型的集合*/showList(animals);showList(cats);showList(minCats);}/*what:輸出ArrayList集合每一個元素ArrayList集合元素可能是任意類型params:首先他接受的ArrayList類型 ArrayList接收類型參數接收ArrayList類型!!! ArrayList接收類型參數 最后形成接收各種類型的集合careout:類型通配符列表 對象 無法填充元素 因為你不知道該對象元素是何種類型*/public static void showList(ArrayList<?> list) {//類型通配符對象 無法填充元素
// list.add(new Cats());
// list.add(new Animals());
// list.add(new minCats());for (int i = 0;i<list.size();i++) {System.out.println(list.get(i));}}/*what:測試 接收ArrayList類型對象 ArrayList設置接受類型上限為Cats最后 參數接收上限為Cats的列表對象*/public static void test2(){ArrayList<Animals> animals = new ArrayList<>();ArrayList<Cats> cats = new ArrayList<>();ArrayList<minCats> minCats = new ArrayList<>();// showListTop(animals); //失敗 因為只能接收Cats以下的列表showListTop(cats);showListTop(minCats);}/*what:設置ArrayList 接收類型的上限 凡是上限以上無法接收類型*/public static void showListTop(ArrayList<? extends Cats> list){for(int i = 0;i<list.size();i++){System.out.println(list.get(i));}}
}
Animals 父類
package typeWildcardTop;/*
what:父類 是一個類型!!!*/
public class Animals {
}
子類Cats
package typeWildcardTop;public class Cats extends Animals{
}
子類minCats
package typeWildcardTop;public class minCats extends Cats{
}