Как получить метод из переменного количества параметров в java отражении - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно протестировать Java-класс с огромным количеством функций.Я использую огурец, чтобы я мог вызвать функцию, которая получает только параметр, или я мог бы вызвать другую с 7 или 8 параметрами (все они, к счастью, строковые).

Поэтому я создаю такую ​​таблицу:

| objectname | funcname  | [varX]             | 
| objectname | funcname2 | [varY]             |
| objectname | funcname3 | [varZ, varX, varY] |
| objectname | funcname  | [varZ]             |

В коде я мог бы преобразовать третий столбец в переменный список параметров, это легко, но моя проблема - вызвать функцию getMethod .Я не хочу определять список:

objectName.getClass().getMethod("functionName", varList.get(0).getClass());
objectName.getClass().getMethod("functionName", varList.get(0).getClass(), varList.get(1).getClass());
objectName.getClass().getMethod("functionName", varList.get(0).getClass(), varList.get(1).getClass(), varList.get(2).getClass());
....

Есть ли способ решить это с помощью чего-то вроде

objectName.getClass().getMethod("functionName", list2ArgList);

?Что-то вроде c # версии GetMethod public System.Reflection.MethodInfo GetMethod (string name, Type[] types, System.Reflection.ParameterModifier[] modifiers);

1 Ответ

1 голос
/ 20 сентября 2019

Метод, о котором вы говорите: Class.getMethod(String name, Class<?>... parameterTypes).Поскольку varargs в Java - это просто синтаксический сахар (для массива), вы можете сделать следующее

Class[] argList = new Class[] { String.class, String.class };
...getClass().getMethod(methodName, argList);

Теперь вы можете динамически создавать argList, но если у вас есть только Strings в качестве параметров, вы тольконужно правильно подобрать размер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...