为什么List <Object> list = new ArrayList <String>()这会给出TypeMismatch错误

Rag*_*arg 1 java collections arraylist java-6

List<Object> list = new ArrayList<String>()
Run Code Online (Sandbox Code Playgroud)

当我使用上面的行编译器给我类型不匹配错误.但正如我所理解的,Object是String的超类,如果我创建了对象列表,那么它也应该接受String.那么为什么上述陈述是错误的.我正在寻找解释.

Per*_*ror 6

一句话,因为

泛型类型不是多态的

即,即使java.lang.Stringjava.lang.Object多态的子类型也不适用于泛型类型.它仅适用于集合类型.从而

List<Object> list = new ArrayList<String>(); //this isn't valid
    List<Object> list = new ArrayList<Object>(); //valid
List<? extends Object> list = new ArrayList<String>();//valid
Run Code Online (Sandbox Code Playgroud)

为什么泛型类型不能是多态的?