使用方法调用静态方法?

时间:2010-12-09 05:22:17

标签: java

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

例如
这里我有一段代码,它检查一个类并找到任何没有参数的静态方法,返回类型为Boolean,并以名称“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");
    }
}

1 个答案:

答案 0 :(得分:1)

首先,您声称正在检查staticness的方法。但实际上你不是。使用此选项检查static修饰符

Modifier.isStatic(method.getModifiers());

现在,如果方法为null且参数为零,则可以将method.invoke()作为第一个参数并将空数组作为第二个传递给static。例如,

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

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