问题描述
每当我思考时,我都会更好地理解泛型(并且无需编译即可回答),我得到了一个打破这一理论的例子。这是一个非常简单的示例:
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 (将#修改为@)