gpt4 book ai didi

java - 为什么不能,例如将 List 传递给以 List 作为参数的方法?

转载 作者:搜寻专家 更新时间:2023-11-01 01:01:53 27 4
gpt4 key购买 nike

简单的例子:

public class Person
{
String name;
}

public class VIP extends Person
{
String title;
}

然后做:

public static void main(String[] args)
{
Person p = new Person();
p.name = "John";

VIP vip = new VIP();
vip.name = "Bob";
vip.title = "CEO";

List<Person> personList = new ArrayList<Person>();
List<VIP> vipList = new ArrayList<VIP>();

personList.add(p);
personList.add(vip);

vipList.add(vip);

printNames(personList);
printNames(vipList);
}

public static void printNames(List<Person> persons)
{
for (Person p : persons)
System.out.println(p.name);
}

在“printNames(vipList)”(需要 List 找到 List )上给出错误。

这是否意味着尽管 VIP 是 Person,但 List 不是 List

最佳答案

没错。香蕉列表不是水果列表。否则,您可以在香蕉列表中插入任何 水果。例如

List<Fruit> lf = new List<Banana>();
lf.add(new Apple());

会导致意外或违反直觉的结果。

关于java - 为什么不能,例如将 List<ChildClass> 传递给以 List<ParentClass> 作为参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2133192/

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