溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中的反射

發(fā)布時間:2020-06-12 16:39:33 來源:億速云 閱讀:153 作者:元一 欄目:編程語言

概念

JAVA中反射是動態(tài)獲取信息以及bai動態(tài)調(diào)用對象方法的du一種反射機制。Java反射就是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意方法和屬性;并且能改變它的屬性。而這也是Java被視為動態(tài)語言的一個關(guān)鍵性質(zhì)。Java反射的功能是在運行時判斷任意一個對象所屬的類,在運行時構(gòu)造任意一個類的對象,在運行時判斷任意一個類所具有的成員變量和方法,在運行時調(diào)用任意一個對象的方法,生成動態(tài)代理。

Java反射案例

寫一個"框架",不能改變該類的任何代碼的前提下,可以幫我們創(chuàng)建任意類的對象,并且執(zhí)行其中任意方法

Java中的反射

className=Student
methodName=sleep

代碼

import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;
/**
 * @author tanglei
 * @date 2020/6/11 3:10 下午
 */
public class ReflectTest {
    public static void main(String[] args) throws Exception {
        Student s = new Student();
        Properties pro = new Properties();
        //獲取配置文件的路徑
        ClassLoader classLoader = ReflectTest.class.getClassLoader();
        InputStream is = classLoader.getResourceAsStream("pro.properties");
        pro.load(is);
        String className = pro.getProperty("className");
        String methodName = pro.getProperty("methodName");
        //加載類進內(nèi)存
        Class cla = Class.forName(className);
        Object obj = cla.newInstance();
        //加載方法進內(nèi)存
        Method method = cla.getMethod(methodName);
        method.invoke(obj);
    }
}

以上就是Java反射案例(不要錯過)的詳細內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI