Имеявызова method.invoke с переменным числом аргументов
public Object callRemote (String sRemoteInterface, String sMethod,
Object... arguments);
Я хочу сделать что-то вроде:
method.invoke(
instance,
arguments...,
sessionId
);
Так это работает для методов с переменным числом аргументов.
Как я могу это сделать?
[EDIT] Вот фактический код, который я использую прямо сейчас. Она работает в течение 1 или 2-х аргументов, но это должно быть сделано общее для N аргументов:
public Object callRemote (String sRemoteInterface, String sMethod,
Object... arguments) throws Exception {
Object instance;
Method method;
if (sRemoteInterface==null) {
throw new Exception("Must specify a remote interface to locate.");
}
instance = this.locator.getRemoteReference(sRemoteInterface, this.sessionId);
if (arguments.length == 2) {
method = instance.getClass().getMethod(
sMethod,
arguments[0].getClass(),
arguments[1].getClass(),
int.class
);
return method.invoke(
instance,
arguments[0],
arguments[1],
sessionId
);
} else {
method = instance.getClass().getMethod(
sMethod,
arguments[0].getClass(),
int.class
);
return method.invoke(
instance,
arguments[0],
sessionId
);
}
}
Я попытался использовать метод method.invoke (instance, arguments [0], arguments [1], sessionId); 'который работал, когда все методы имели два аргумента. Теперь у некоторых из них есть только один и другие 2, поэтому он не работает. Будет ли простая замена для метода method.invoke (instance, arguments, sessionId); 'работает для любого количества аргументов? – NotGaeL
Не могли бы вы привести пример кода, который позволит нам воспроизвести вашу проблему? Может быть много проблем с отражением и varargs, но объяснение каждого из них в ответ займет очень много времени. – Pshemo
опубликовал обновление с помощью всего метода. Я не знаю, правильно ли я это выражаю, но то, что я хочу сделать, сводится к вызову метода с помощью метода method.invoke, используя переменное количество аргументов аргументов, полученных в моем методе varargs 'callRemote'. – NotGaeL