Java getDeclaredConstructor失败,JUnit中出现NoSuchMethodException

Java getDeclaredConstructor失败,JUnit中出现NoSuchMethodException,java,reflection,junit,Java,Reflection,Junit,我有一个基类,它使用反射创建混凝土类的空副本,使用以下命令: public IBase getEmptyCopy() { Class type = this.getClass(); Constructor<?> ctor; try { ctor = type.getDeclaredConstructor(); ctor.setAccessible(true); clonedObject

我有一个基类,它使用反射创建混凝土类的空副本,使用以下命令:

public IBase getEmptyCopy() {
   Class type = this.getClass();
   Constructor<?> ctor;
        try {
            ctor = type.getDeclaredConstructor();
            ctor.setAccessible(true);
            clonedObject =(Base) ctor.newInstance();
        } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
}
}
但是,当我尝试在JUnit测试用例中执行相同操作时,所有这些似乎都起作用:

@Test   
   public void test() {
    ....
        ConcreteClass emptyInstance = (ConcreteClass) someInstance.getEmptyCopy();
        }
我在getDeclaredConstructor调用中得到一个java.lang.NoSuchMethodException

有人能解释一下原因吗


谢谢。

粘贴完整的类定义。是的。此外,克隆方法看起来就像某种片段,因为它实际上没有返回语句。。。数据太少,无法提供帮助:)我发现了一个突破:SomeInstance的创建使用了初始化语法,这显然创建了一个匿名类。一旦我删除了初始化语法,它就可以在JUnit和常规main中工作。现在的问题是,JUnit中是否有一些不同的匿名类处理?
@Test   
   public void test() {
    ....
        ConcreteClass emptyInstance = (ConcreteClass) someInstance.getEmptyCopy();
        }