查看此方法的文档:
我没有看到任何只返回公共构造函数的引用。
我的问题是我有以下一段代码:
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相同。