在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
的实际调用。