Java:没有默认构造函数的类的newInstance

标签 java reflection constructor new-operator instance

我正在尝试为学生的家庭作业构建一个自动测试框架(基于 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/

相关文章:

Java 静态初始化器和反射

c# - 在运行时实现接口(interface) : get_Value method not implemented

java - 乱序链构造函数

java - 如何检测类是否可注入(inject)

java - 无法在 Twilio 中发送短信

java - servlet 上的 Tomcat 类加载器

c++ - 为什么构造函数和析构函数通常在类中首先声明?

javascript - 如何为 Javascript 客户端使用构造函数

java - 使用 IntelliJ 创建 Junit 测试

java - 无法将本地 jar 加载到我的 jar 中