所以我试图在某个类上测试方法(使用默认构造函数),测试方法只能是public
和类型void
,并且必须从"测试&#34 ;.
public static void main(String[] args) throws ClassNotFoundException {
Class<?> c = null;
c = Class.forName(args[0]);
System.out.println(c.getName());
for (Method m : c.getMethods()) {
if (m.getName().startsWith("test")
&& m.getReturnType().equals(Void.TYPE)
&& m.getModifiers() == Modifier.PUBLIC) {
Object o = null;
try {
o = c.newInstance();
} catch (InstantiationException | IllegalAccessException ex) {
System.out.println(ex.getMessage());
}
// ???
}
}
}
所以,我的检查工作,但我不知道如何创建类的新实例并测试方法。我该怎么做?
答案 0 :(得分:2)
尝试:
m.invoke(o);
这将反射调用你的方法'm',因为它没有收到任何参数。
关于检查方法是否为public
的一个注释。你最好以这种方式执行检查:
boolean isPublic = Modifier.isPublic(m.getModifiers());
除非您想检查该方法仅是否公开且没有其他修饰符,否则您的代码就可以了。
异常处理作为例外处理;)