反射機制調用方法 (*****)
invoke
package com.bjpowernode.java.reflect; import com.bjpowernode.java.service.UserService; import java.lang.reflect.Method; /* 重點:必須掌握,通過反射機制怎么調用一個對象的方法? 五顆星***** 反射機制,讓代碼很具有通用性,可變化的內容都是寫到配置文件當中, 將來修改配置文件之后,創建的對象不一樣了,調用的方法也不同了, 但是java代碼不需要做任何改動。這就是反射機制的魅力。 */ public class ReflectTest10 { public static void main(String[] args) throws Exception{ // 不使用反射機制,怎么調用方法 // 創建對象 UserService userService = new UserService(); // 調用方法 /* 要素分析: 要素1:對象userService 要素2:login方法名 要素3:實參列表 要素4:返回值 */ boolean loginSuccess = userService.login("admin","123"); //System.out.println(loginSuccess); System.out.println(loginSuccess ? "登錄成功" : "登錄失敗"); // 使用反射機制來調用一個對象的方法該怎么做? Class userServiceClass = Class.forName("com.bjpowernode.java.service.UserService"); // 創建對象 Object obj = userServiceClass.newInstance(); // 獲取Method Method loginMethod = userServiceClass.getDeclaredMethod("login", String.class, String.class); //Method loginMethod = userServiceClass.getDeclaredMethod("login", int.class); // 調用方法 // 調用方法有幾個要素? 也需要4要素。 // 反射機制中最最最最最重要的一個方法,必須記住。 /* 四要素: loginMethod方法 obj對象 "admin","123" 實參 retValue 返回值 */ Object retValue = loginMethod.invoke(obj, "admin","123123"); System.out.println(retValue); } }