我有一个基类,它使用反射来创建具体类的空副本,使用以下内容:
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();
}
}
我使用以下主要方法创建了一个名为Test的类:
public class Test {
public static void main(String [] args) {
....
ConcreteClass emptyInstance = (ConcreteClass) someInstance.getEmptyCopy();
}
所有似乎都有效,但是当我尝试在JUnit测试用例中做同样的事情时:
@Test
public void test() {
....
ConcreteClass emptyInstance = (ConcreteClass) someInstance.getEmptyCopy();
}
我在getDeclaredConstructor调用上得到了一个java.lang.NoSuchMethodException。
任何人都可以解释这是什么原因吗?
感谢。