我在此代码中遇到了转换问题,但不知道如何纠正它。
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" );
}
}
答案 0 :(得分:5)
getConstructor
从相关类的可能现有构造函数中进行选择。
如果您的班级名称如下:
com.mycorp.SomeClass
并且它没有
public SomeClass(Object object) {
...
}
构造函数,然后ctr
将为null。如果它确实有这样的构造函数,那么在没有为Object
参数提供值的情况下请求新实例只会遇到麻烦。
此外,只有在类不存在时才会捕获,不能找到构造函数,或者安全管理器拒绝创建新类,或者构造函数的调用次数错误参数等。