再帰と同様に機能するジェネリックメソッドがありますが、呼び出しごとにメソッドの異なるインスタンスを呼び出します。
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" で呼び出すことができる場合、コンパイラがコンパイルしない理由がよくわかりません。
なぜコンパイルされないのですか?