3 回答

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
// 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");
如果該方法是私有使用getDeclaredMethod()而不是getMethod()。并調(diào)用setAccessible(true)方法對(duì)象。

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
從Method.invoke()的Javadoc中:
如果基礎(chǔ)方法是靜態(tài)的,則忽略指定的obj參數(shù)。它可以為空。
當(dāng)你會(huì)發(fā)生什么
類別klass = ...;
方法m = klass.getDeclaredMethod(methodName,paramtypes);
m.invoke(null,args)

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
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;
}
}
添加回答
舉報(bào)