反射代码中的IllegalArgumentException

时间:2014-05-22 16:24:14

标签: java reflection

在我的程序中,我尝试使用以下代码调用反射方法:

private void invokeMethod(Component sender, MouseEvent event)
{
    try 
    {
        System.out.println(name);
        Method method = frame.getClass().getMethod("onButton1Clicked", Component.class, MouseEvent.class); 
        method.invoke(sender, event);
    } 
    catch (Exception e) 
    { 
        e.printStackTrace();
    }
}

public void onButton1Clicked(Component sender, MouseEvent e)
{
    System.out.println("Test");
}

但是,如果我运行此代码,则会遇到此异常:

  

java.lang.IllegalArgumentException:object不是声明类的实例

我的错误是什么想法?

1 个答案:

答案 0 :(得分:1)

如果有问题的方法是Frame类的一部分,则需要在Frame的实例上调用它。

快速查看the JavaDoc会告诉您第一个参数应该是调用该方法的实例。

试试这个:

method.invoke(frame, sender, event);