如何使用Class作为泛型类型标记

时间:2013-03-17 11:47:00

标签: java

我有我的方法:

myMethod(Class class){}

我想将所有降序类传递给此方法MyClass,因此将其更改为:

myMethod(Class<MyClass> class){}

并致电:

myMethod(MyOtherClassExtendingMyClass.class)

然后我有编译错误:

The method myMethod(Class<MyClass>) in the type XXX is not applicable
for the arguments (Class<MyOtherClassExtendingMyClass>)

如何确保只允许具有所有降序类的MyClass作为此方法的参数?

2 个答案:

答案 0 :(得分:8)

使用上限通配符:

myMethod(Class<? extends MyClass>) {}

您可能也希望捕获通配符:

<T extends MyClass> void myMethod(Class<T> klass) {}

这次你可以参考身体里的T

答案 1 :(得分:1)

根据您的问题,我认为您需要以下方法声明myMethod

myMethod(Class<? extends MyClass> clazz)