2014-08-28 85 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

相關問題