gpt4 book ai didi

java - 匹配捕获与上限时类型检查中断?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:04 25 4
gpt4 key购买 nike

创建一个类

public class Play {
public static void main(String[] args) throws Exception {
outer(Integer.class, inner("abc"));
}

static <C> void outer(Class<C> c, List<? super C> s){
}

static <C> List<C> inner(C c) {
return null;
}
}

它在 Java 8 中编译! (在 Eclipse 4.5 和 JDK1.8_25 中)https://ideone.com/Q9JLHP

在 Eclipse 中,所有边界都被正确推断,但是 outer 怎么可能的捕获 Supplier<? super Integer>曾经对争论感到满意Supplier<String> ??

编辑:阐明这是特定于 Java 8 的,并使示例不那么困惑。

最佳答案

inner("abc")可以由编译器自行决定解释为 Supplier String 的任何父类(super class)型. -- 例如,

Supplier<Object> inner = inner("abc");

工作得很好,因为 "abc" 也是一个Object .这就是这里发生的事情:inner正在返回给你 Supplier<Object> .

关于java - 匹配捕获与上限时类型检查中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32209634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com