2011-05-05 102 views
2

我有一个util类应该使用反射来调用给定Class对象的方法。是否有可能调用默认构造函数而不是零参数构造函数?

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

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

是否有可能调用Java的默认构造函数来创建实例而不是自定义的零参数构造函数?

回答

8

如果类没有定义构造函数,则只有默认的构造函数。

无参数构造函数应该只取决于您提供的依赖关系(即无),并且您认为您仍然可以使用该类,而无需其他依赖项。

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

2

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