Java泛型参数和继承

标签 java generics inheritance polymorphism

假设我们知道 ViewGroup 扩展了 View。
此外,我们还有一个通用的参数化 class A<T extends View>

问题:
为什么不使用方法 C.add()接受 new A<ViewGroup>()作为参数?
由于多态性,它不应该起作用吗?

Class diagram

解决方案: 唱歌加? extends View让我们添加接受 new A<ViewGroup>()作为参数。

Solution

最佳答案

您将 add 方法签名为:

static void add(A<View>)

但你的意思可能是:

static void add(A<? extends View> a)

关于Java泛型参数和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6927399/

相关文章:

Python 子类化 - 如何更新另一个类属性使用的类属性

C# 创建一个从继承类构造的类

java - 在Java中,为什么在父类和子类中声明的变量在子类的实例中不可见?

java - 不兼容的类型 : com. rh.host.Validator<T> 无法转换为 com.rh.host.Pool.Validator<T>

c# - 为什么我不能在 C# 中捕获通用异常?

java - 绘制多个移动图形

java - 如何根据对象中的一个变量查找列表中的常见条目?

java - 当找到多个集合的交集时,使用retainAll()的最快顺序

java - 如何在 Moqui 框架中配置实体外观以禁用检查实体存在

c# - 我可以使用三元运算符来设置泛型方法参数吗?