最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

java中為什么會存在反射

2023-05-05 07:49 作者:一枚猿  | 我要投稿

java要用反射的原因是:1.提高程序的靈活性;2.屏蔽掉實現(xiàn)的細節(jié),讓使用者更加方便好用。java反射是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法和屬性。 一、java為什么要用反射 一句話概括就是使用反射可以賦予jvm動態(tài)編譯的能力,否則類的元數(shù)據(jù)信息只能用靜態(tài)編譯的方式實現(xiàn),例如熱加載,Tomcat的classloader等等都沒法支持 Java中編譯類型有兩種: 靜態(tài)編譯:在編譯時確定類型,綁定對象即通過。 動態(tài)編譯:運行時確定類型,綁定對象。動態(tài)編譯最大限度地發(fā)揮了Java的靈活性,體現(xiàn)了多態(tài)的應用,可以減低類之間的耦合性。 Java反射是Java被視為動態(tài)(或準動態(tài))語言的一個關(guān)鍵性質(zhì)。這個機制允許程序在運行時透過Reflection APIs取得任何一個已知名稱的class的內(nèi)部信息,包括其modifiers(諸如public、static等)、superclass(例如Object)、實現(xiàn)之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于運行時改變fields內(nèi)容或喚起methods。 Reflection可以在運行時加載、探知、使用編譯期間完全未知的classes。即Java程序可以加載一個運行時才得知名稱的class,獲取其完整構(gòu)造,并生成其對象實體、或?qū)ζ鋐ields設(shè)值、或喚起其methods。 反射(reflection)允許靜態(tài)語言在運行時(runtime)檢查、修改程序的結(jié)構(gòu)與行為。在靜態(tài)語言中,使用一個變量時,必須知道它的類型。在Java中,變量的類型信息在編譯時都保存到了class文件中,這樣在運行時才能保證準確無誤;換句話說,程序在運行時的行為都是固定的。如果想在運行時改變,就需要反射這東西了。 實現(xiàn)Java反射機制的類都位于java.lang.reflect包中: 1、Class類:代表一個類 2、Field類:代表類的成員變量(類的屬性) 3、Method類:代表類的方法 4、Constructor類:代表類的構(gòu)造方法 5、Array類:提供了動態(tài)創(chuàng)建數(shù)組,以及訪問數(shù)組的元素的靜態(tài)方法 * 對于修改靜態(tài)常量類型是需要小心,對于基本類型的靜態(tài)常量,JAVA在編譯的時候就會把代碼中對此常量中引用的地方替換成相應常量值。 二、反射介紹 反射的概念是由Smith在1982年首次提出的,主要是指程序可以訪問、檢測和修改它本身狀態(tài)或行為的一種能力。這一概念的提出很快引發(fā)了計算機科學領(lǐng)域關(guān)于應用反射性的研究。它首先被程序語言的設(shè)計領(lǐng)域所采用,并在Lisp和面向?qū)ο蠓矫嫒〉昧顺煽?。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射機制的語言。最近,反射機制也被應用到了視窗系統(tǒng)、操作系統(tǒng)和文件系統(tǒng)中。 Java中,反射是一種強大的工具。它使您能夠創(chuàng)建靈活的代碼,這些代碼可以在運行時裝配,無需在組件之間進行源代表鏈接。反射允許我們在編寫與執(zhí)行時,使我們的程序代碼能夠接入裝載到JVM中的類的內(nèi)部信息,而不是源代碼中選定的類協(xié)作的代碼。這使反射成為構(gòu)建靈活的應用的主要工具。但需注意的是:如果使用不當,反射的成本很高。

java中為什么會存在反射的評論 (共 條)

分享到微博請遵守國家法律
青岛市| 福海县| 宜昌市| 徐闻县| 顺平县| 栾川县| 新丰县| 灵丘县| 永泰县| 通河县| 沁阳市| 商洛市| 郯城县| 老河口市| 莱芜市| 绥芬河市| 汝南县| 六安市| 庐江县| 青神县| 本溪市| 镇沅| 宣恩县| 宝应县| 玉环县| 兴仁县| 罗城| 黑水县| 南澳县| 珠海市| 友谊县| 甘德县| 马关县| 云霄县| 吴江市| 犍为县| SHOW| 文安县| 天台县| 长沙市| 福州市|