gpt4 book ai didi

Java 反射 - 使用接受接口(interface)作为参数的公共(public)构造函数调用 protected 类

转载 作者:行者123 更新时间:2023-11-30 05:56:50 24 4
gpt4 key购买 nike

我想通过反射调用一个由公共(public)构造函数组成的 protected 类。以下是我的代码

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      

我认为问题可能是因为构造函数参数是一个接口(interface)。

最佳答案

内部类隐式地将封闭对象作为其构造函数的第一个参数。但是,当使用反射时,您需要显式指定它:

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 -----^

关于Java 反射 - 使用接受接口(interface)作为参数的公共(public)构造函数调用 protected 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53029507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com