摘要:反射概念反射機(jī)制是在運行狀態(tài)中,對于任意一個實體類,都能夠知道這個類的所有屬性和方法對于任意一個對象,都能夠調(diào)用它的任意方法和屬性這種動態(tài)獲取信息以及動態(tài)調(diào)用對象方法的功能稱為語言的反射機(jī)制。
java反射概念
JAVA反射機(jī)制是在運行狀態(tài)中,對于任意一個實體類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意方法和屬性;這種動態(tài)獲取信息以及動態(tài)調(diào)用對象方法的功能稱為java語言的反射機(jī)制。
使用1.首先要獲取Class對象,有三種方法
Cat cat=new Cat(); Class cat1=Class.forName("com.ncu.reflect.Cat");//Class.forName("全類名") Class cat2=Cat.class; //類名.class Class cat3=cat.getClass(); //對象名.getclass()
2.獲取實體類的字段
Field[] getDeclaredFields() //獲取所有字段,不限修飾符 Field getDeclaredFields(String name) //獲取指定字段,不限修飾符 Field[] getFields() //獲取所有public修飾的成員變量 Field getField(String name) //獲取指定名稱的public修飾的成員變量 //獲取Cat類中所有字段,不限修飾符 Class cat1=Class.forName("com.ncu.reflect.Cat"); Field[] fields = cat1.getDeclaredFields();
3.Field類用來設(shè)置和獲取字段值的方法
Cat cat=new Cat(); Field age = cat1.getDeclaredField("age"); age.set(cat,"15"); //將cat對象age字段值設(shè)置為15 System.out.println(age.get(cat)); //獲取cat對象age字段值
4.獲取成員方法
跟獲取字段方法雷同 Method[] getMethods() Method getMethod(String name, 類>... parameterTypes) Method[] getDeclaredMethods() Method getDeclaredMethod(String name, 類>... parameterTypes) // Method eat = cat1.getMethod("eat", null);//獲取一個public修飾符,無參的eat函數(shù) eat.invoke(cat); //調(diào)用eat函數(shù)
5.獲取構(gòu)造函數(shù)
Constructor>[] getConstructors() Constructor使用場景getConstructor(類>... parameterTypes) Constructor getDeclaredConstructor(類>... parameterTypes) Constructor>[] getDeclaredConstructors() cat1.getConstructors();//獲取Cat類的無參構(gòu)造函數(shù)
使用框架時有時候不知道有什么類,類有什么方法,就需要使用反射
可以將要使用的類和方法放在配置文件,不修改該類任何代碼,可以創(chuàng)建任意其他類的對象,可以執(zhí)行任意方法,達(dá)到解耦功能。只需要改變配置文件
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75573.html
摘要:反射機(jī)制一結(jié)合官方通過編寫的反射教程,復(fù)習(xí)一下反射的知識。反射的概念反射是一種在運行時獲取以及修改應(yīng)用行為的一種工具。因為反射需要動態(tài)的解析類的信息,相比于非反射使用的方式要慢。反射需要獲取一定的運行時權(quán)限,在特定的安全環(huán)境下不一定存在。 Java反射機(jī)制(一) 結(jié)合Oracle官方通過JDK8編寫的反射教程,復(fù)習(xí)一下反射的知識。結(jié)尾篇補一個小例子。 主要內(nèi)容 這次博客的主要內(nèi)容就是簡...
摘要:通過反射獲取帶參無返回值成員方法并使用設(shè)置安全檢查,訪問私有構(gòu)造函數(shù)必須創(chuàng)建實例這種不行,注意和方法需要傳遞參數(shù)測試復(fù)制這個功能獲取私有方法,同樣注意和的區(qū)別賦予訪問權(quán)限調(diào)用方法。 反射 目錄介紹 1.反射概述 1.1 反射概述 1.2 獲取class文件對象的三種方式 1.3 反射常用的方法介紹 1.4 反射的定義 1.5 反射的組成 1.6 反射的作用有哪些 2.反射的...
摘要:反射使用類對象提供的基本元數(shù)據(jù),能從類對象中找出方法或字段的名稱,然后獲取表示方法或字段的對象。常見的反射手段有反射和反射。以之前的反射為例其中指定了方法的返回類型,其實不止如此。 Java反射機(jī)制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類 在運行時構(gòu)造任意一個類的對象 在運行時判斷任意一個類所具有的成員變量和方法 在運行時調(diào)用任意一個對象的方法 生成動態(tài)代理 很多框架...
近期在維護(hù)公司項目的時候遇到一個問題,因為實體類中的 set 方法涉及到了業(yè)務(wù)邏輯,因此在給對象賦值的過程中不能夠使用 set 方法,為了實現(xiàn)功能,所以采用了反射的機(jī)制給對象屬性賦值,借此機(jī)會也了解了反射的一些具體用法和使用場景,分以下兩點對反射進(jìn)行分析: 反射的優(yōu)勢和劣勢 反射的應(yīng)用場景 反射的優(yōu)勢和劣勢 ??個人理解,反射機(jī)制實際上就是上帝模式,如果說方法的調(diào)用是 Java 正確的打開方式...
摘要:一反射機(jī)制概念程序運行時,允許改變程序結(jié)構(gòu)或變量類型,這種語言稱為動態(tài)語言,如,是動態(tài)語言顯然,,不是動態(tài)語言,但是有著一個非常突出的動態(tài)相關(guān)機(jī)制。相關(guān)的為二獲取源頭重點打開權(quán)限所有類的對象其實都是的實例。 一、Java反射機(jī)制概念 程序運行時,允許改變程序結(jié)構(gòu)或變量類型,這種語言稱為動態(tài)語言,如Python, Ruby是動態(tài)語言;顯然C++,Java,C#不是動態(tài)語言,但是JAVA有...
閱讀 1774·2021-09-28 09:43
閱讀 1122·2021-09-23 11:22
閱讀 2738·2021-09-14 18:05
閱讀 1832·2019-08-30 15:52
閱讀 2823·2019-08-30 10:55
閱讀 2020·2019-08-29 16:58
閱讀 1332·2019-08-29 16:37
閱讀 3045·2019-08-29 16:25