gpt4 book ai didi

java - 构造一个在运行时确定类型的对象?

转载 作者:行者123 更新时间:2023-12-02 04:53:48 24 4
gpt4 key购买 nike

所以我试图测试某个类上的方法(使用默认构造函数),并且测试方法只能是 public 且类型为 void,并且必须以“测试”开头。

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());
}

// ???
}
}
}

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

最佳答案

尝试:

m.invoke(o);

这将反射调用您的方法“m”,因为它不接收任何参数。

关于检查方法是否为public的注意事项。您最好这样执行检查:

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

除非您想检查该方法是否是公共(public)的并且没有其他修饰符,在这种情况下您的代码就可以。

异常处理留作练习;)

关于java - 构造一个在运行时确定类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28976581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com