Java 反射 - 使用接受接口作为参数的 public 构造函数调用受保护的 class
Java reflection - Call protected class with public constructor that accepts Interface as argument
我想通过反射调用由 public 构造函数组成的受保护 class。以下是我的代码
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
我认为问题可能在于构造函数参数是一个接口。
Inner 类 隐式地将封闭对象作为其构造函数的第一个参数。但是,使用反射时需要明确指定它:
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 -----^
我想通过反射调用由 public 构造函数组成的受保护 class。以下是我的代码
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
我认为问题可能在于构造函数参数是一个接口。
Inner 类 隐式地将封闭对象作为其构造函数的第一个参数。但是,使用反射时需要明确指定它:
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 -----^