无法从ArrayList <String>转换为List <Comparable>

nar*_*yan 2 java generics inheritance

当我编写以下代码编译器时说

无法转换ArrayList<String>List<Comparable>

private List<Comparable> get(){
    return new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)

但是当我用通配符编写返回类型时,代码会编译.

private List<? extends Comparable> get() {
    return new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下为什么吗?

SLa*_*aks 6

A List<String>不是List<Comparable>.
毕竟,你可以投入Integer一个List<Comparable>.

  • @ narek.gevorgyan但如果你尝试,你会得到一个编译错误. (2认同)