Я пытаюсь вызвать API с заданными входными параметрами. Входные параметры приходят в виде списка. Теперь моя работа состоит в том, чтобы получать параметры параметров API один за другим и создавать требуемый экземпляр типа из List. Я могу сделать для простых типов Java, список, набор, но я застрял в массиве.
Method method = getMethodFromTheClassBasedOnvalues( loadedClass, apiName, numberOfParams);
Type[] apiMethodParams = method.getGenericParameterTypes();
List<Type> expectedParamTypes = Arrays.asList(apiMethodArgTypes);
List<Object> actualValues = // method input.
List<Object> argsList = new ArrayList<Object>();
for (int i = 0; i < expectedParamTypes.length; i++) {
argsList.add(castToRequiredType(expectedParamTypes.get(i),
actualValues.get(i)));
method.invoke(loadClass.newInstance(), argsList.toArray());
Проблема возникает, когда я получаю метод, имеющий тип API (String, String []), я пытаюсь получить GenericTypes, вызывая method.getGenericParameterTypes (), который возвращает и массив что-то вроде этого
[class java.lang.String, class [Ljava.lang.String;]
или если один параметр [Ljava.lang.String;
Исходя из этого, как бы я узнал, если он принимает Array of String. Я вижу разницу в том, что имя класса начинается после [L и заканчивается; но гарантировано ли это?
Будет ли bevhiour таким же для CustomObject [] также?
Есть ли какой-нибудь умный способ узнать, принимает ли метод массив, и построить его в последнее время?
Любые мысли в этом направлении помогут.
Заранее спасибо.