Method method;
try {
method = m.getClass().getMethod(h);
} catch (SecurityException e) {
} catch (NoSuchMethodException e) {
}
try {
//line below wants me to initialize it
method.invoke(m);
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
此代码处于 while 循环中。当我将方法方法设置为 null 时,我得到一个空点异常。如何让我的代码在我的 while 循环中运行。
首先从
不默默地忽略异常。 在这种情况下,如果您捕获并忽略第一个异常,则将method
null
如果第一个try{}
块中存在异常,则您的变量method
不会被初始化。这就是您收到编译错误的原因。
试试这个:
public
class ReflectiveCall
{
public static
void main(String args[])
{
ReflectiveCall m = new ReflectiveCall();
String h = "foo";
while (true)
{
Method method;
try
{
method = m.getClass().getMethod(h);
method.invoke(m);
}
catch (SecurityException e)
{
}
catch (NoSuchMethodException e)
{
}
catch (IllegalArgumentException e)
{
}
catch (IllegalAccessException e)
{
}
catch (InvocationTargetException e)
{
}
}
}
public
void foo()
{
System.out.println("foo");
}
}