2010-12-09 176 views
0

当Method的其中一个参数调用invoke(Object obj, Object[] args)需要一个对象参数时,如何调用静态java方法?使用方法调用静态方法?

例如
在这里我有一段代码,它检查一个类并找到任何没有参数,返回类型为布尔型并以名称“test”开头的静态方法。我试图调用这些方法来查看它们是否返回true,而我在如何做到这一点方面存在争议。

for (int i = 0; i < Class.forName(name).getDeclaredMethods().length; i++) { 
    Method method = Class.forName(name).getDeclaredMethods()[i]; 
    if (method.getParameterTypes().length == 0 
      && method.getReturnType().getName() == "boolean" 
      && method.getName().startsWith("test", 0)) { 
     if (Class.forName(name).getDeclaredMethods()[i].invoke()==true) 
      System.out.println("Test" + " " + Class.forName(name).getDeclaredMethods()[i].getName() + " " + "succeeded"); 
    } 
} 
+0

?你有没有接受过任何答案? – 2010-12-09 05:29:11

+0

你是什么意思?...你可以接受答案吗? – Jake 2010-12-09 05:39:42

回答

1

首先你声称你正在检查方法staticness。但实际上你不是。使用此检查static修改,

Modifier.isStatic(method.getModifiers()); 

现在,你可以通过null作为第一个参数,一个空数组作为第二,method.invoke()如果方法是static零个参数。例如,

Class.forName(name).getDeclaredMethods()[i].invoke(null, new Object[0]); 

提示:不要重复每次Class.Forname()。将它存储在一些变量中并使用它。在适当的地方做类似的事情。