泛型机制(二)

2021-04-01  本文已影响0人  coolTigers

泛型通配符

实例代码

package my.demo;

import java.util.ArrayList;
import java.util.Iterator;

public class mainFunction {
    public static void main(String[] args){
        ArrayList<Integer> list = new ArrayList<>();
        ArrayList<String> list1 = new ArrayList<>();
        list.add(123);
        list.add(456);
        list1.add("abc");
        list1.add("def");
        PrintArray(list);
        PrintArray(list1);
    }

    public  static  void PrintArray(ArrayList<?> list)
    {
        Iterator<?> it = list.iterator();
        while(it.hasNext()) {
            Object obj = it.next();
            System.out.println(obj);
            System.out.println(", ");
        }

    }
}

结果

4.png

泛型的上下限限定

定义

package my.demo;

import java.util.ArrayList;
import java.util.Collection;

/*
    泛型的上限限定: ? extend E 代表使用的泛型只能是E类型的子类/本身
    泛型的下限限定: ? super E 代表使用的泛型只能是E类型的父类/本身
* */
public class GenericDemo1 {
    public static void main(String[] args) {
        Collection<Integer> list1 = new ArrayList<Integer>();
        Collection<String> list2 = new ArrayList<String>();
        Collection<Number> list3 = new ArrayList<Number>();
        Collection<Object> list4 = new ArrayList<Object>();

        GetElement1(list1);
        GetElement1(list2); // String extends Object , String不是Number的子类
        GetElement1(list3);
        GetElement1(list4); // Object 不是Number的子类

        GetElement2(list1); // Integer extends Numbers,Integer不是Numer的父类
        GetElement2(list2); // String 不是Number的父类
        GetElement2(list3);
        GetElement2(list4);


    }
    public static void GetElement1(Collection<? extends Number> col){}
    public static void GetElement2(Collection<? super Number> col){}
}

上一篇 下一篇

猜你喜欢

热点阅读