Java 的多个通配符:揭秘编译器的混乱
虽然问题中的代码片段最初可能看起来令人困惑,但基本原理非常简单并遵守 Java 的泛型类型系统。
角色通配符数量
通配符(*)代表未知类型。在代码片段中,使用多个通配符会给编译器带来不确定性:
static void doNothing(List<?> list1, List<?> list2) { }
由于通配符不相关,因此您可以使用不同类型的列表调用 doNothing,例如 List
嵌套通配符和捕获转换
这种混乱主要是由于误解了嵌套的作用通配符:
static void probablyIllegal(List<List<?>> lol, List<?> list) { }
在这种情况下,嵌套通配符列表>不捕获像 List
static void nowDefinitelyIllegal(List<? extends List<?>> lol, List<?> list) { }
现在,如果我们尝试将列表(可能是 List
附加说明
以上是Java 的多个通配符如何影响泛型方法行为和类型兼容性?的详细内容。更多信息请关注PHP中文网其他相关文章!