我有一个util类,它应该使用反射在给定的Class对象上调用方法。
现在它使用.newInstance()创建一个新实例,然后调用我想测试的方法。
问题是我的一些类的零参数构造函数由于缺少依赖性等而抛出异常,并使我无法调用我实际想要测试的方法。
是否可以调用Java的default-constructor来创建实例而不是自定义零参数构造函数?
答案 0 :(得分:8)
如果类没有定义构造函数,则只有默认构造函数。
no-arg构造函数应该只接受你给它的依赖(即没有),看起来你相信你仍然可以使用没有其他依赖的类。
在Sun / Oracle JVM中,您可以使用Unsafe.allocateInstance(Class)
创建实例而无需调用构造函数,但我会首先尝试修复您的类设计。
答案 1 :(得分:2)
只有在您自己不提供构造函数时才会创建默认构造函数 因此,只要您的类至少有一个构造函数,就不会创建该默认构造函数。