java的反射機(jī)制是什么?這個(gè)問(wèn)題可能是我們?nèi)粘9ぷ鹘?jīng)常見(jiàn)到的。通過(guò)這個(gè)問(wèn)題,希望你能收獲更多。今天跟隨小編一起來(lái)看解決方案吧。
創(chuàng)新互聯(lián)專注于科爾沁左翼網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供科爾沁左翼營(yíng)銷型網(wǎng)站建設(shè),科爾沁左翼網(wǎng)站制作、科爾沁左翼網(wǎng)頁(yè)設(shè)計(jì)、科爾沁左翼網(wǎng)站官網(wǎng)定制、微信小程序定制開(kāi)發(fā)服務(wù),打造科爾沁左翼網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供科爾沁左翼網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
Java 反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠獲得這個(gè)類的所有屬性和方法,對(duì)于任意一個(gè)對(duì)象都能夠調(diào)用它的任意一個(gè)屬性和方法。這種在運(yùn)行時(shí)動(dòng)態(tài)的獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為 Java 的反射機(jī)制。
Class 類與 java.lang.reflect 類庫(kù)一起對(duì)反射的概念進(jìn)行了支持,該類庫(kù)包含了 Field,Method,Constructor 類 (每個(gè)類都實(shí)現(xiàn)了 Member 接口)。這些類型的對(duì)象時(shí)由 JVM 在運(yùn)行時(shí)創(chuàng)建的,用以表示未知類里對(duì)應(yīng)的成員。
這樣你就可以使用 Constructor 創(chuàng)建新的對(duì)象,用 get() 和 set() 方法讀取和修改與 Field 對(duì)象關(guān)聯(lián)的字段,用 invoke() 方法調(diào)用與 Method 對(duì)象關(guān)聯(lián)的方法。
另外,還可以調(diào)用 getFields() getMethods() 和 getConstructors() 等很便利的方法,以返回表示字段,方法,以及構(gòu)造器的對(duì)象的數(shù)組。這樣匿名對(duì)象的信息就能在運(yùn)行時(shí)被完全確定下來(lái),而在編譯時(shí)不需要知道任何事情。
通過(guò)反射機(jī)制獲取類信息
通過(guò)反射機(jī)制創(chuàng)建對(duì)象,在創(chuàng)建對(duì)象之前要獲得對(duì)象的構(gòu)造函數(shù)對(duì)象,通過(guò)構(gòu)造函數(shù)對(duì)象創(chuàng)建對(duì)應(yīng)類的實(shí)例。
下面這段代碼分別在運(yùn)行期間創(chuàng)建了一個(gè)無(wú)參與有參的對(duì)象實(shí)例。由于 getConstructor() 方法與 newInstance() 方法拋出了很多異常 (你可以通過(guò)源代碼查看它們),這里就簡(jiǎn)寫了直接拋出一個(gè) Exception,下同。
package com.jas.reflect; import java.lang.reflect.Constructor; public class ReflectTest { public static void main(String[] args) throws Exception { Class clazz = null; clazz = Class.forName("com.jas.reflect.Fruit"); Constructor<Fruit> constructor1 = clazz.getConstructor(); Constructor<Fruit> constructor2 = clazz.getConstructor(String.class); Fruit fruit1 = constructor1.newInstance(); Fruit fruit2 = constructor2.newInstance("Apple"); } } class Fruit{ public Fruit(){ System.out.println("無(wú)參構(gòu)造器 Run..........."); } public Fruit(String type){ System.out.println("有參構(gòu)造器 Run..........." + type); } }
輸出:
無(wú)參構(gòu)造器 Run........... 有參構(gòu)造器 Run...........Appl
以上就是java的反射機(jī)制的詳細(xì)內(nèi)容,代碼示例簡(jiǎn)單明了,如果在日常工作遇到此問(wèn)題。通過(guò)這篇文章,希望你能有所收獲,更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文標(biāo)題:java的反射機(jī)制是什么?
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article22/pgiscc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、品牌網(wǎng)站制作、定制網(wǎng)站、企業(yè)建站、、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)