gpt4 book ai didi

java - Class.getDeclaredConstructor 是否只返回公共(public)构造函数?

转载 作者:搜寻专家 更新时间:2023-11-01 02:27:58 31 4
gpt4 key购买 nike

在此处查看此方法的文档:getDeclaredConstructor()

我看不到它仅返回公共(public)构造函数的任何引用。

我的问题是我有以下代码:

protected BaseClass internalCreate(String className) throws Exception {

Class<? extends BaseClass> classObj = Class.forName(className)
.asSubclass(BaseClass.class);

Constructor<?> ctor = classObj.getDeclaredConstructor((Class[]) null);
ctor.setAccessible(true);

return (BaseClass) ctor.newInstance();
}

当为具有默认构造函数可见性(包私有(private))的类运行此方法时,我收到 MissingMethod 异常。将构造函数更改为 public 可以解决此问题。

最佳答案

此方法返回在类中声明的构造函数,无论是否公开。但这并不意味着您可以使用返回的构造函数实例化一个实例,这就是您收到错误的原因。如果不允许访问,您可以在此类构造函数上调用 setAccessible(true)。这与 getDeclaredMethod 和 getDeclaredFields 相同。

关于java - Class.getDeclaredConstructor 是否只返回公共(public)构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16977742/

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