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循环中。当我将Method方法设置为null时,我得到一个空指针异常。如何让我的代码在我的while循环中运行。
答案 0 :(得分:0)
首先不要默默地忽略异常。在这种情况下,如果您捕获并忽略了第一个例外,则method
将为null
答案 1 :(得分:-1)
如果第一个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");
}
}