Java Class.getDeclaredConstructor是否只返回公共构造函数?

Java Class.getDeclaredConstructor是否只返回公共构造函数?,java,reflection,constructor,Java,Reflection,Constructor,在此处查看此方法的文档: 我看不到它只返回公共构造函数的任何引用 我的问题是我有以下代码: protected BaseClass internalCreate(String className) throws Exception { Class<? extends BaseClass> classObj = Class.forName(className) .asSubclass(BaseClass.class); Con

在此处查看此方法的文档:

我看不到它只返回公共构造函数的任何引用

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

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();
}
受保护的基类internalCreate(字符串类名称)引发异常{
类ctor=classObj.getDeclaredConstructor((类[])null);
ctor.setAccessible(true);
return(BaseClass)ctor.newInstance();
}

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

此方法返回类中声明的构造函数,无论是否为public。但这并不意味着您可以使用返回的构造函数恢复实例,这就是为什么会出现错误。如果不允许访问,则在此类构造函数上调用setAccessible(true)。这与getDeclaredMethod和getDeclaredFields相同