java - Java 编译器如何对下界通配符执行类型删除?

标签 java oop generics

在使用泛型类型编译源代码时,Java 编译器会自动执行类型删除,将泛型声明替换为合适的原始类型。

根据 Oracle 文档,此删除替换了上方绑定(bind)的通配符 <? extends T>与 T。这非常适合动态多态性。

但是对于下界通配符 <? super T> 是如何进行删除的?看到每个类都有一个共同的父类(super class)(对象),使用它会破坏整个目的吗?

最佳答案

对于父类(super class)型,它删除为对象类型。 <?super T>仅用于编译时校验

关于java - Java 编译器如何对下界通配符执行类型删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25480172/

相关文章:

java - 为什么Java中可以将父类(super class)初始化为子类?

java - Java 中的文件 I/O

C# 虚拟方法

c# - 将泛型方法转换为异步导致泛型参数出现问题

arrays - Kotlin vararg任意数组的数组

java - 使用 nextFloat() 时线程 "main"java.util.InputMismatchException 中出现异常

使用 Set 的 Java 代码显示奇怪的输出?

generics - 未知类型的最小值/最大值

java - 单元测试等于和哈希码 - 一个复杂的故事

java - 如何在 ChromeDriver 使用 Appium 和 Android Studio 上禁用保存密码