Java 为什么多态性不适用于泛型?
下面的代码有什么问题Java 为什么多态性不适用于泛型?,java,generics,Java,Generics,下面的代码有什么问题 import java.util.*; public class Test { static class Car {} static class bmw extends Car{} List<Car> list = new LinkedList<bmw>(); } import java.util.*; 公开课考试{ 静态类Car{} 静态类bmw扩展车{} 列表=新建LinkedList(); } 编译器显示以下错误
import java.util.*;
public class Test {
static class Car {}
static class bmw extends Car{}
List<Car> list = new LinkedList<bmw>();
}
import java.util.*;
公开课考试{
静态类Car{}
静态类bmw扩展车{}
列表=新建LinkedList();
}
编译器显示以下错误:
Test.java:7: error: incompatible types: LinkedList<bmw> cannot be converted to List<Car>
List<Car> list = new LinkedList<bmw>();
^
Test.java:7:错误:不兼容的类型:LinkedList无法转换为List
列表=新建LinkedList();
^
为什么它不起作用?当你写作时,它是适用的
List<? extends Car> list = new LinkedList<bmw>();
创建Car的
列表
意味着它将保存Car的所有实例
你的宝马是一辆车
- 但是你的
因此,如果您想在车不是宝马
列表中插入Car
,您可以很容易地完成,但是如果您想插入所有bmw
Car类,您可以使用前面提到的方法标记extensing
List<Car> list = new LinkedList<bmw>();
在运行时。为了在运行时维护类型安全,编译器采取预防措施,并在使用泛型时执行静态类型检查。请发布更多代码。简单您无法执行此列表必须是一种类型您可以执行此列表列表=新建LinkedList();然后list.add(newbmw());请帮我做这个
List<Car> list = new LinkedList<bmw>();
List list = new LinkedList();