在此处查看此方法的文档: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修复了该问题。
答案 0 :(得分:5)
此方法返回类中声明的构造函数,public或not。但这并不意味着您可以使用返回的构造函数实例化实例,这就是您收到错误的原因。如果不允许访问,则调用此类构造函数上的setAccessible(true)。这与getDeclaredMethod和getDeclaredFields相同。