2014-08-28 51 views
0
 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循环中运行。如何在不初始化的情况下在while循环中进行反射

回答

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

首先从不默默地忽略异常。在这种情况下,如果你赶上并忽略第一个异常,那么methodnull

相关问题