小渣飞、 2020-12-09 03:22 采纳率: 87.9%
浏览 13
已采纳

关于 java 中的泛型?



import org.junit.Test;

import java.util.ArrayList;
import java.util.List;


public class TessWildcard {
    @Test
    public void test(){
        List<? extends Person> list1 = null;
        List<? super Person> list2 = null;

        List<Student> list3 = new ArrayList<>();
        List<Person> list4 = new ArrayList<>();
        List<Object> list5 = new ArrayList<>();

        // ***********************
        list1 = list4; // list4 符合 list1 小于等于 Person 的规范

        // 这里也没有超出 Person 请问为什么会编译报错
        Student stu = list1.get(0);
    }

    class Person{

    }

    class Student extends Person{

    }
}

本人小白,求通俗易懂的解答

  • 写回答

4条回答 默认 最新

  • aLvXuan 2020-12-09 09:41
    关注

    ? extends 上界通配符,list1 的上界为 Person, list1.get(0) ---> Person,Student 继承于 Person,自然不能把 Person 赋值给 Student,跟Java 的继承方面有关系,有关泛型,可以参考一下下面链接 
    https://kaixue.io/kotlin-generics/

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题