在我的程序中,我尝试用以下代码调用反射方法:
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");
}
但是如果我运行这段代码,就会出现这个异常:
. lang。对象不是声明类的实例
你知道我错在哪里吗?
如果所讨论的方法是Frame类的一部分,则需要在Frame的实例上调用它。
快速查看一下JavaDoc就会知道,第一个参数应该是将调用该方法的实例。
试试这个:
method.invoke(frame, sender, event);