Java 反射調用方法




反射機制調用方法 (*****)

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM