Второй параметр метода getMethod
является аргументом VarArg.Правильное использование: если отраженный метод не имеет параметра, второй параметр указывать не следует.Если у отраженного метода есть параметр, то каждый параметр должен быть указан следующим образом:
import java.lang.reflect.Method;
public class Example {
public void exampleMethodNoParam() {
System.out.println("No params");
}
public void exampleMethodWithParam(String arg) {
System.out.println(arg);
}
public static void main(String[] args) throws Throwable {
Example example = new Example();
Method noParam = Example.class.getMethod("exampleMethodNoParam");
Method stringParam = Example.class.getMethod("exampleMethodWithParam", String.class);
noParam.invoke(example);
stringParam.invoke(example, "test");
//output
//No params
//test
}
}
ОБНОВЛЕНИЕ
Итак, в вашем случае, когда вы указываете null
компилятор не знает, какой тип вы указали.Когда вы пытаетесь привести null
к классу, который неизвестен, но в любом случае является классом, вы получаете исключение, потому что нет
public void exampleMethod(Class<?> object) { }
подписи exampleMethod.