gpt4 book ai didi

java - 使用泛型时,List 如何在内部检查方法调用的类型?

转载 作者:行者123 更新时间:2023-11-30 06:28:47 25 4
gpt4 key购买 nike

鉴于此 List<Employee> :

List <Employee> empList=new ArrayList<Employee>();

当我尝试添加 Student :

l.add(0,new Student(1,2,3));

列表如何解决这个问题并给我编译错误?

最佳答案

实际上它不是特别的 List进行检查的是编译器(如您所暗示的)。

List仅提供两条信息:

  • 有一个类型 E类型 List参数化:

    public interface List<E> extends Collection<E>
  • 方法 add接受 E 类型的对象:

    boolean add(E e);

如果你构建一个 List<Employee>然后编译器知道你不能调用add与任何除了Employee如果您尝试这样做,将会给出编译器错误。

还应注意在运行时没有这样的检查!因此,如果您以某种方式设法“偷偷摸摸”编译器所做的检查(例如通过使用 a raw type ),那么您可以对 List 做各种错误的事情。并且运行时不会检测到问题(直到您尝试以非通用方式访问“错误”类型)。

关于java - 使用泛型时,List 如何在内部检查方法调用的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12172564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com