我正在尝试为学生的家庭作业构建一个自动测试框架(基于 jUnit,但这并不重要)。他们必须为某些类创建构造函数,并为它们添加一些方法。稍后,通过我提供的测试功能,他们会检查是否正常。
我想要做的是,通过反射,为我想要测试的某个类创建一个新实例。问题在于,有时没有默认构造函数。我不在乎,我想自己创建一个实例并初始化实例变量。有没有办法做到这一点? 很抱歉,如果以前有人问过这个问题,但我找不到任何答案。
提前致谢。
最佳答案
调用 Class.getConstructor()
然后 Constructor.newInstance()
传入适当的参数。示例代码:
import java.lang.reflect.*;
public class Test {
public Test(int x) {
System.out.println("Constuctor called! x = " + x);
}
// Don't just declare "throws Exception" in real code!
public static void main(String[] args) throws Exception {
Class<Test> clazz = Test.class;
Constructor<Test> ctor = clazz.getConstructor(int.class);
Test instance = ctor.newInstance(5);
}
}
关于Java:没有默认构造函数的类的newInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3671649/