类.getDeclaredConstructor只返回公共构造函数



查看此方法的文档:

我没有看到任何只返回公共构造函数的引用。

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

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();
}

当为一个具有默认构造函数可见性(包私有)的类运行此方法时,我得到一个MissingMethod异常。将构造函数更改为public可修复此问题。

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

相关内容

  • 没有找到相关文章

最新更新