【问题标题】:Is it possible to call the default-constructor instead of the zero-argument constructor?是否可以调用默认构造函数而不是零参数构造函数?
【发布时间】:2011-05-05 10:23:11
【问题描述】:

我有一个 util 类,它应该使用反射调用给定 Class 对象的方法。

现在它使用 .newInstance() 创建一个新实例,然后调用我要测试的方法。

问题是我的一些类的零参数构造函数由于缺少依赖项等而引发异常,并且使我无法调用我实际想要测试的方法。

是否可以调用 Java 的默认构造函数来代替自定义的零参数构造函数来创建实例?

【问题讨论】:

    标签: java reflection constructor instantiation


    【解决方案1】:

    如果类没有定义构造函数,你只有一个默认构造函数。

    无参数构造函数应该只接受你给它的依赖项(即没有),看起来你相信你仍然可以在没有额外依赖项的情况下使用这个类。

    在 Sun/Oracle JVM 中,您可以使用 Unsafe.allocateInstance(Class) 创建实例而不调用构造函数,但我会尝试先修复您的类设计。

    【讨论】:

      【解决方案2】:

      只有当您自己不提供构造函数时,才会创建默认构造函数。
      因此,只要您的类至少有一个构造函数,就不会创建默认构造函数。

      【讨论】:

        猜你喜欢
        • 2021-08-31
        • 2016-03-25
        • 2013-05-06
        • 2013-03-05
        • 1970-01-01
        • 2012-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多