小渣飞、 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 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败