• JAVA高级复习-有限制条件的通配符的使用


    /**
     * 有限制条件的通配符的使用
     */
    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;
        }
    }
    
  • 相关阅读:
    Python
    Html body的滚动条禁止与启用
    wampserver 更改www目录
    Linux下的tar压缩解压缩命令详解
    Linux 重置root密码
    Ubuntu增加一个用户并给普通用户赋予root权限的方法
    redhat系统下三种主要的软件包安装方法
    Linux 添加yum命令
    如何退出 Vim
    Linux ssh开启服务
  • 原文地址:https://www.cnblogs.com/elnimo/p/13669860.html
Copyright © 2020-2023  润新知