美文网首页
Java泛型略深入总结

Java泛型略深入总结

作者: qichanna | 来源:发表于2019-04-30 16:42 被阅读0次

    首先说一个概念,Object是String的父类,但是List<Object>不是List<String>的父类,如下代码

    List<Object> a1 = new ArrayList<>(); 
    List<String> a2 = new ArrayList<>();
    a1.add(a2.get(0));
    

    类似以上这样的代码是不可以的,因为他们不是父类与子类的关系,那要怎样才能表示集合泛型的父类与子类的关系呢,看如下代码:

    通配符上限extends

    List<? extends T> list1;
    List<T> list2
    list2.add(list1.get(0));
    

    以上代码是可以的,因为可以确定list1是T的子类(或T),所以可以添加到list2中,list1.get方法能被赋值给T或者Object,list.add方法不能使用,因为无法确定list1的具体类型,只能知道是T的子类。

    同理通配符下限super也可以这样:

    List<? super T> list1;
    List<T> list2
    list1.add(list2.get(0));
    

    因为list1可以确定是list2的超类,所以list2可以被添加到list1中,list2.add方法能用,但是list1.get方法不能使用,因为list1是T的超类,除了object可以被赋值,其他没有类型可以确定。

    相关文章

      网友评论

          本文标题:Java泛型略深入总结

          本文链接:https://www.haomeiwen.com/subject/gaxftxtx.html