首页 > 编程语言 > 详细

JAVA高级复习-泛型通配符的使用

时间:2020-09-14 22:19:41      阅读:93      评论:0      收藏:0      [点我收藏+]

技术分享图片

/**
 * 通配符的使用
 * 通配符:?
 */
public class GenericTest7 {

    /**
     * 类A 是 类B的父类,G<A> 和 G<B>是没有关系的,二者共同的父类是:G<?>
     */
    @Test
    public void test01() {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);

        List<String> list2 = new ArrayList<>();
        list2.add("hi");
        list2.add("hello");

        List<Object> list3 = new ArrayList<>();
        list3.add(1);
        list3.add("bye");
        showList(list);
        showList(list2);
        showList(list3);

        List<?> listFather = null;
        listFather = list;
        listFather = list2;
        listFather = list3;
    }

    private void showList(List<?> list) {
        for (int i = 0; i < list.size(); i++) {
            Object obj = list.get(i);
            System.out.println(obj);
        }
    }

    @Test
    public void test02() {
        List<String> list = new ArrayList<>();
        list.add("AA");
        list.add("BB");
        List<?> listFather = null;
        listFather = list;
        //报错:add (capture<?>) in List?cannot be applied to (java.lang.String)
        //结论:添加(写入)对于List<?>不能向其内部添加数据,除了添加null;
        //listFather.add("DD");
        listFather.add(null);

        //结论:获取(读取)对于List<?>允许读取数据,读取的数据类型为Object
        Object obj = listFather.get(0);
        System.out.println(obj);
    }

}

JAVA高级复习-泛型通配符的使用

原文:https://www.cnblogs.com/elnimo/p/13669599.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!