Я хочу использовать
Class.getMethod(String name, Class... parameterTypes)
чтобы найти метод, который мне нужно вызвать с заданными параметрами, но, по-видимому, как описано в Bug 6176992 В Java не включается автобоксинг. Поэтому, если у моего отраженного класса есть метод с сигнатурой (String, int), вы все равно получаете исключение NoSuchMethodException с массивом {String.class, Integer.class} в качестве пареметра.
Есть ли какое-либо решение для этого? Единственный способ, с помощью которого я мог бы называть getMethod() с каждой перестановкой примитивных и не примитивных типов, которые я действительно не хочу делать.
Изменить: сделать это более ясным: я хорошо знаю классы примитивного типа, но я не вижу, как они могут помочь решить мою проблему. Мой массив parameterTypes приходит откуда-то, и я знаю, что он будет возвращать не примитивные типы. Я не могу предположить, что интерфейс будет объявлен только с примитивными типами и что именно моя проблема:
public interface TestInterface()
{
public void doTest(Integer i1, int i2, double d3, Double d);
}
Class<?>[] classes = { Integer.class, Integer.class, Double.class, Double.class }
// Due to autoboxing I should become the doTest method here, but it doesn't work
TestInterface.class.getMethod("doTest", classes);