2009-06-23 66 views
4

基本上我想创建一个具有像下面这样的签名的方法:返回给定子类的实例的方法的通用签名是什么?

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

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

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

工作正常,但我想迫使shellTabClass是的ShellTab一个子类。

关于如何解决这个问题的任何想法?

谢谢。

回答

12

把约束在一般的初始参数,如:

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

注意,您可以对方法参数的泛型类型参数的约束(例如,Tom Hawtin - tackline建议制定shellTabClassClass<? extends T>,虽然我不认为这在这种情况下是有差别的)。
但是你不能约束一个已经声明的类型。

+0

可能是public T getShellTab(类 shellTabClass)。 – 2009-06-23 14:44:59

3

这个怎么样?

public <T extends ShellTab> T getShellTab(Class<T> shellTabClass) 
相关问题