Java 泛型,一种强制执行父类(super class)型或子类型的方法

标签 java generics

假设我有一个类和一个方法,如下所示:

class MyClass<T> {

    void doStuff(Wrapper<T> wrapper) {
        //impl.
    }
}

参数“wrapper”的通用范围可以修改为Wrapper<? extends T>使该方法接受 T 的子类型,并且 Wrapper<? super T>接受 super 类型。但是,有没有一种方法可以修改 MyClass,使其接受 T 的子类型和父类(super class)型(不是任何类型),并且只有一个方法名称? (可能存在过载)

我可以简单地选择 Wrapper<?>当然,但是“接受任何内容”与“接受 T 的类层次结构中的某些内容”不同。我还可以制作两种单独的方法,一种是 <? super T>和一个带有 <? extends T> ,但是这些方法需要不同的名称,因为删除后签名是相同的。

注意:请出于好奇考虑这个问题。

最佳答案

您可以尝试以下方法

<S extends T> void doStuff(Wrapper<? super S> wrapper)

但需要仔细检查这是否满足您的要求。

关于Java 泛型,一种强制执行父类(super class)型或子类型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65395612/

相关文章:

java - (?) 通配符泛型的不规则性

java - 在 Java 中运行基于 cpu 的任务的简单程序的最佳线程池大小是多少

java - 在 Mac OS 中将 JAR 添加到 CLASSPATH

java - 更改单个 JOptionPane 大小

java - Java中有固定长度的通用数组对象吗?

c# - 通用存储库 - IRepository<T> 或 IRepository

java - JSP 和 Spring Boot

java - 如何暂停newScheduledThreadPool?

java - 通用 : ArrayList of ? 在 Java 中扩展 ISomeInterface

java - 如何将接口(interface)与通用类的实现绑定(bind)?