gpt4 book ai didi

java - 使用反射实例化 protected 构造函数时出现 NoSuchMethodException

转载 作者:行者123 更新时间:2023-12-03 02:55:24 25 4
gpt4 key购买 nike

这是我第一次使用反射,不知道在实例化 protected 构造函数时犯了什么错误。下面是我实例化 JsonProcessingException 的构造函数的代码。

getDeclaredConstructor 导致 NoSuchMethodException,尽管此异常类具有带有一个、两个和三个参数的 protected 构造函数。

final Constructor<JsonProcessingException> constructor = 
JsonProcessingException.class
.getDeclaredConstructor(Object.class, Object.class);
constructor.setAccessible(true);

我的假设:我读到我们可以使用反射实例化一个私有(private)构造函数,所以我假设 protected 构造函数也可以被实例化。

最佳答案

您还必须考虑构造函数参数的类型,而不仅仅是数字。 JsonProcessingException没有采用两个 Object 作为参数的构造函数,但有一个采用 StringJsonLocation 的构造函数以及采用 >String 和一个Throwable。要访问第二个构造函数,请像这样编写:

final Constructor<JsonProcessingException> constructor = 
JsonProcessingException.class
.getDeclaredConstructor(new Class[]{String.class, Throwable.class});
constructor.setAccessible(true);
JsonProcessingException ex = constructor.newInstance(msg, throwable);

另请参阅http://tutorials.jenkov.com/java-reflection/constructors.html

关于java - 使用反射实例化 protected 构造函数时出现 NoSuchMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39271573/

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