Câu trả lời:
// String.class here is the parameter type, that might not be the case with you
Method method = clazz.getMethod("methodName", String.class);
Object o = method.invoke(null, "whatever");
Trong trường hợp phương pháp là sử dụng riêng getDeclaredMethod()
thay vì getMethod()
. Và gọi setAccessible(true)
đối tượng phương thức.
String methodName= "...";
String[] args = {};
Method[] methods = clazz.getMethods();
for (Method m : methods) {
if (methodName.equals(m.getName())) {
// for static methods we can use null as instance of class
m.invoke(null, new Object[] {args});
break;
}
}
public class Add {
static int add(int a, int b){
return (a+b);
}
}
Trong ví dụ trên, 'add' là một phương thức tĩnh lấy hai số nguyên làm đối số.
Đoạn mã sau được sử dụng để gọi phương thức 'thêm' với đầu vào 1 và 2.
Class myClass = Class.forName("Add");
Method method = myClass.getDeclaredMethod("add", int.class, int.class);
Object result = method.invoke(null, 1, 2);
Liên kết tham khảo .