类型通配符上限
主函数
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{
}