使用反射调用静态方法

我想调用main静态的方法。我得到了类型的对象Class,但是我无法创建该类的实例,也无法调用该static方法main



偶然的你
浏览 1111回答 3
3回答

神不在的星期二

// String.class here is the parameter type, that might not be the case with youMethod method = clazz.getMethod("methodName", String.class);Object o = method.invoke(null, "whatever");如果该方法是私有使用getDeclaredMethod()而不是getMethod()。并调用setAccessible(true)方法对象。

白衣染霜花

从Method.invoke()的Javadoc中:如果基础方法是静态的,则忽略指定的obj参数。它可以为空。当你会发生什么类别klass = ...;方法m = klass.getDeclaredMethod(methodName,paramtypes);m.invoke(null,args)

慕容3067478

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;    }}
打开App,查看更多内容
随时随地看视频慕课网APP