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
    ,您可以很容易地完成,但是如果您想插入所有
    extensing
    Car类,您可以使用前面提到的方法标记


作为Tagir答案的补充:JVM在运行时执行一个名为“类型擦除”的过程

这意味着;您的原始列表

List<Car> list = new LinkedList<bmw>();

在运行时。为了在运行时维护类型安全,编译器采取预防措施,并在使用泛型时执行静态类型检查。

请发布更多代码。简单您无法执行此列表必须是一种类型您可以执行此列表列表=新建LinkedList();然后list.add(newbmw());请帮我做这个
List<Car> list = new LinkedList<bmw>();
List list = new LinkedList();