Java getMethod с параметром подкласса

Я пишу библиотеку, которая использует отражение для динамического поиска и вызова методов. Учитывая только объект, имя метода и список параметров, мне нужно вызвать данный метод, как если бы вызов метода был явно записан в коде.

Мы использовали следующий подход, который работает в большинстве случаев:

static void callMethod(Object receiver, String methodName, Object[] params) {
    Class[] paramTypes = new Class[params.length];
    for (int i = 0; i < param.length; i++) {
        paramTypes[i] = params[i].getClass();
    }
    receiver.getClass().getMethod(methodName, paramTypes).invoke(receiver, params);
}

Однако когда один из параметров являетсяподкласс одного из поддерживаемых типов для метода, API отражения выдаетNoSuchMethodException, Например, если получателькласс имеетtestMethod(Foo) определено следующее:

receiver.getClass().getMethod("testMethod", FooSubclass.class).invoke(receiver, new FooSubclass());

хотя это работает:

receiver.testMethod(new FooSubclass());

Как мне решить это? Если вызов метода там жестко запрограммированНет проблем - компилятор просто использует алгоритм перегрузки, чтобы выбрать наиболее подходящий метод для использования. Это неОднако, я работаю с отражением, а это то, что мне нужно.

Заранее спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос