基本上我想创建一个具有如下签名的方法:
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/