构造在运行时确定的类型的对象?

时间:2015-03-11 00:34:29

标签: java reflection

所以我试图在某个类上测试方法(使用默认构造函数),测试方法只能是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());
            }

            // ???    
        }
    }
}

所以,我的检查工作,但我不知道如何创建类的新实例并测试方法。我该怎么做?

1 个答案:

答案 0 :(得分:2)

尝试:

m.invoke(o);

这将反射调用你的方法'm',因为它没有收到任何参数。

关于检查方法是否为public的一个注释。你最好以这种方式执行检查:

boolean isPublic = Modifier.isPublic(m.getModifiers());

除非您想检查该方法是否公开且没有其他修饰符,否则您的代码就可以了。

异常处理作为例外处理;)