lys*_*cid 4 java reflection constructor
在这里查看此方法的文档: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();
}
Run Code Online (Sandbox Code Playgroud)
当为具有默认构造函数可见性(包私有)的类运行此方法时,我收到MissingMethod异常.将构造函数更改为public可修复此问题.
此方法返回类中声明的构造函数,public或not.但这并不意味着您可以使用返回的构造函数实例化实例,这就是您收到错误的原因.如果不允许访问,则调用此类构造函数上的setAccessible(true).这与getDeclaredMethod和getDeclaredFields相同.
| 归档时间: |
|
| 查看次数: |
707 次 |
| 最近记录: |