3

我有我的方法:

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 及其所有降级类将被允许作为此方法的参数?

4

2 回答 2

8

使用上限通配符:

myMethod(Class<? extends MyClass>) {}

您可能还想捕获通配符:

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

这个时候可以参考T在正文中。

于 2013-03-17T11:49:00.890 回答
1

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

myMethod(Class<? extends MyClass> clazz)
于 2013-03-17T11:50:50.373 回答