在Java中使用反射时出错
我有一个铸造问题,在这段代码,但不知道如何纠正它在Java中使用反射时出错,java,reflection,casting,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 // t
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" );
}
}
getConstructor
为所讨论的类从可能的现有构造函数中进行选择
如果您的类名如下所示:
com.mycorp.SomeClass
而且它没有一个
public SomeClass(Object object) {
...
}
构造函数,则ctr
将为空。如果它确实有这样一个构造函数,那么请求一个新实例而不为对象
参数提供值就是自找麻烦
此外,只有在类不存在、找不到构造函数的名称、安全管理器拒绝创建新类、调用构造函数时使用了错误的参数等情况下,才能捕获该类。当您确定哪个答案对您最有帮助时,单击答案左侧的复选框大纲,将其标记为已接受答案。请提供一个完整但最少的示例,包括a)一个包含构造函数的示例类b)该类对
showFrame
的实际调用。