Java中的invoke方法

該方法搭配註解使用,可以使代碼顯得很美觀,也有利於後續的業務拓展,SpringMVC的controller就是基於該方法實現的

上代碼

MethodTest類

  1. package com.test;  
  2.   
  3.   
  4. import java.lang.reflect.InvocationTargetException;  
  5. import java.lang.reflect.Method;  
  6. import java.util.HashMap;  
  7.   
  8.   
  9. public class MethodTest {  
  10.     public static void main(String[] args) {  
  11.           HashMap<Integer, String> hashMap = new HashMap<Integer, String>();  
  12.           hashMap.put(1, “Hello UI!”);  
  13.           Class<?> clazz = UITest.class;  
  14.           try {  
  15.                     // getMethod方法的第一個參數是方法名,第二個參數是對應方法的參數(Java存在方法重載)  
  16.                     // 如果該方法有多個參數,在後面繼續加參數即可  
  17.                     Method method = clazz.getMethod(“getData”, HashMap.class);  
  18.                     method.invoke(clazz.newInstance(), hashMap);  
  19.           } catch (NoSuchMethodException e) {  
  20.                     e.printStackTrace();  
  21.           } catch (IllegalAccessException e) {  
  22.                     e.printStackTrace();  
  23.           } catch (IllegalArgumentException e) {  
  24.                     e.printStackTrace();  
  25.           } catch (InvocationTargetException e) {  
  26.                     e.printStackTrace();  
  27.           } catch (InstantiationException e) {  
  28.                     e.printStackTrace();  
  29.           }   
  30.     }  
  31. }  

UITest類

  1. package com.test;  
  2.   
  3. import java.util.HashMap;  
  4.   
  5. public class UITest {  
  6.       
  7.     public UITest(){  
  8.         System.out.println(“UITest executed!”);  
  9.     }  
  10.     public void getData(HashMap<String, Object> hashMap){  
  11.         System.out.println(hashMap.get(1));  
  12.     }  
  13.   
  14. }  

輸出結果


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章