如何在不初始化的情况下在 while 循环中进行反射


      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");
    }
}

相关内容

  • 没有找到相关文章

最新更新