我有一個類似於遞歸的泛型方法,但爲每個調用調用方法的不同實例。是什麼導致與Java泛型和反射這個編譯錯誤?
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() {...}
的問題是有註釋的行不能編譯,給了以下錯誤:
The method doSomething(Class, M) in the type MainTest is not applicable for the arguments (Class, capture#3-of ? extends A)
我不太明白爲什麼編譯器不能編譯,如果它可以調用doSomething
的M =「?擴展A」。
爲什麼不編譯?
泛型請。 Java中沒有模板。 – EJP