我有一个通用方法,它应该类似于递归,但为每次调用调用不同的方法实例。
public <M extends A> void doSomething(Class<M> mClass, M mObject)
{
// ... Do something with mObject.
A object = getObject();
Class<? extends A> objectClass = object.getClass();
doSomething(objectClass, objectClass.cast(object)); // Does not compile.
}
private A getObject() {...}
问题是带有注释的行无法编译,出现以下错误:
MainTest 类型中的方法 doSomething(Class, M) 不适用于参数 (Class, capture#3-of ? extends A)
我不太明白如果编译器可以doSomething
用 M = "? extends A" 调用,为什么编译器不编译。
为什么不编译?