java - 返回给定子类实例的方法的通用签名是什么?

标签 java generics

基本上我想创建一个具有如下签名的方法:

public <T> T getShellTab(Class<T extends ShellTab> shellTabClass)

但这不是有效的 Java。
我希望能够传递作为 ShellTab 子类的类并返回该类的实例。

public <T> T getShellTab(Class<T> shellTabClass)

工作正常,但我想强制 shellTabClass 成为 ShellTab 的子类。

关于如何实现这一点有什么想法吗?

谢谢。

最佳答案

将约束放在初始泛型参数中,如下所示:

public <T extends ShellTab> T getShellTab(Class<T> shellTabClass)

请注意,您可以对方法参数的泛型类型参数进行约束(例如,Tom Hawtin - tackline 建议将 shellTabClass 变成 Class<? extends T>,尽管我认为在这种情况下没有什么不同) .
但是您不能约束已经声明的类型。

关于java - 返回给定子类实例的方法的通用签名是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1032971/

相关文章:

java - 谁执行 HBase 过滤器?

java - readUTF 中的 EOFException

java - 为什么返回泛型列表的 Java Stream 不起作用

scala - (在 Scala 中,)有什么可以用类的泛型类型参数来完成,但不能用抽象类型成员来完成的吗?

generics - SwiftUI 通用上下文菜单 View

java - 如何在 webdriver 中使用 $x ("//input[@id=' searchInput']") xpath 因为它给出了完成语句的错误

java - Spring框架有几种配置方式?它们在技术上有何区别? (不是优点或缺点..)

java - JEE6 - CDI - 执行时的 DI

c# - 实现处理不同整数类型集合的泛型方法的正确方法是什么?

c# - 非常奇怪的 C# 泛型问题