Java泛型不可能赋值?

问题描述

每当我思考时,我都会更好地理解泛型(并且无需编译即可回答),我得到了一个打破这一理论的例子。这是一个非常简单的示例:

static void consumer(List<? super List<String>> param) {
    System.out.println(param);
}

和两个调用:

public static void main(String[] args) {
    List<String> list = List.of("123");
    consumer(list);
    consumer(List.of("123"));
}

对我来说,任何调用都不应该编译。 String不是List的超类型。仍然,第二个编译。但是,我们假设发生这种情况是因为编译器可以在此处推断 some 类型。当然,这种类型不存在,它将在运行时失败,对吗?对?不。它就是有效的。因此,有人可以给我的生活带来些理智吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)