我想通过反射调用一个包含公共构造函数的受保护类。以下是我的代码
final Class clazz = Whitebox.getInnerClassType(parentClass.getClass(),
"InnerClassName");
final Constructor constructor = Whitebox.getConstructor(clazz,AnInterface.class);
obj = constructor.newInstance(interfaceMockObject);
我收到以下异常:
org.powermock.reflect.exceptions.ConstructorNotFoundException: Failed to lookup constructor with parameter types
我认为可能是因为构造函数参数是一个接口。
答案 0 :(得分:1)
内部类隐式地将封闭对象作为其构造函数的第一个参数。但是,在使用反射时,您需要明确指定它:
final Class clazz = Whitebox.getInnerClassType(parentClass.getClass(), "InnerClassName");
final Constructor constructor =
Whitebox.getConstructor(clazz, paretnClass.getClass(), AnInterface.class);
// Here -----------------------^
statusPage = constructor.newInstance(parentClass, interfaceMockObject);
// And pass the parent instance -----^