cod*_*er9 -2 java reflection casting
我在此代码中遇到了转换问题,但不知道如何纠正它.
public void showFrame(String className, Object controller) throws Exception{
try {
Class c = Class.forName("com." + className);
// "(Object.class)" I want this to be of type held in className var
// this type will be same as one passed into "controller" at runtime
Constructor ctr = c.getConstructor(Object.class);
ctr.newInstance(controller);
} catch (ClassNotFoundException ex) {
JOptionPane.showMessageDialog(null, "Error" );
}
}
Run Code Online (Sandbox Code Playgroud)
getConstructor 从相关类的可能现有构造函数中进行选择.
如果您的班级名称如下:
com.mycorp.SomeClass
Run Code Online (Sandbox Code Playgroud)
它没有
public SomeClass(Object object) {
...
}
Run Code Online (Sandbox Code Playgroud)
构造函数,然后ctr将为null.如果它确实有这样的构造函数,那么在不提供Object参数值的情况下请求新实例只是在寻找麻烦.
此外,只有在类不存在时才会捕获,不能找到构造函数,或者安全管理器拒绝创建新类,或者是否使用错误数量的参数调用构造函数等.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |