I am attempting to write a method the executes a static method from another class by passing an array of strings as arguments to the method.
Here's what I have:
public static void
executeStaticCommand(final String[] command, Class<?> provider)
{
Method[] validMethods = provider.getMethods();
String javaCommand = TextFormat.toCamelCase(command[0]);
for (Method method : validMethods) {
if (method.getName().equals(javaCommand)) {
try {
method.invoke(null, new Object[] { new Object[] { command } });
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
Throwable ex = e.getCause();
ex.printStackTrace();
}
break;
}
}
}
Such that this:
String[] args = new String[] { "methodName", "arg1", "arg2" };
executeStaticCommand(args, ClassName.class);
Should execute this:
public class ClassName {
public static void methodName(String[] args) {
assert args[1].equals("arg1");
}
}
However I'm getting IllegalArgumentException
s.
Passing Array To The Method In Java To pass an array as an argument to a method, you just have to pass the name of the array without square brackets. The method prototype should match to accept the argument of the array type. Given below is the method prototype: void method_name (int [] array);
In telecommunications and radar, a reflective array antenna is a class of directive antennas in which multiple driven elements are mounted in front of a flat surface designed to reflect the radio waves in a desired direction.
You have two problems:
String[]
, but you're passing in a Object[]
The problems are all in the inner try
block, so I show only that code.
String[] args = Arrays.copyOfRange(command, 1, command.length - 1);
method.invoke(null, new Object[]{args}); // must prevent expansion into varargs
Thanks to Perception for reminding me of the varargs issue
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With