简单的例子:
public class Person
{
String name;
}
public class VIP extends Person
{
String title;
}
Run Code Online (Sandbox Code Playgroud)
然后做:
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);
}
Run Code Online (Sandbox Code Playgroud)
在"printNames(vipList)"上给出错误(必需的List <Person> found List <VIP>).
这是否意味着虽然VIP是Person,但List <VIP>不是List <Person>?
Bri*_*new 11
那就对了.香蕉清单不是水果清单.否则你可以在香蕉列表中插入任何水果.例如
List<Fruit> lf = new List<Banana>();
lf.add(new Apple());
Run Code Online (Sandbox Code Playgroud)
会导致意外或违反直觉的结果.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |