5、泛型在继承上的体现

泛型在继承上的体现:

 如果B是A的一个子类型(子类或者子接口),而G是具有泛型声明的类或接口,G<B>并不是G<A>的子类型,二者不具备子父类关系,二者时并列关系;
 如果B是A的一个子类型(子类或者子接口),A<G> 是 B<G> 的父类;
实例1:
public class GenericTest {

    @Test
    public void test1(){

        Object obj = null;
        String str = null;
        // 编译成功,多态的体现
        obj = str;

        Object[] arr1 = null;
        String[] arr2 = null;
        // 编译成功
        arr1 = arr2;
        
        List<Object> list1 = null;
        List<String> list2 = null;
        // 编译不通过
        // 此时的list1和list2的类型不具有子父类关系
        // list1 = list2;
    }
    
    @Test
    public void test2(){

        List<String> list1 = null;
        ArrayList<String> list2 = null;
        // 编译通过
        // 这种写法我们平时经常用
        list1 = list2;

        // 经常这样写
        List<String> list4 = new ArrayList<>();
    }
}
posted @ 2020-08-31 22:40  kehuaihan  阅读(95)  评论(0编辑  收藏  举报