Java反射機制
導語:最近研究java研究得很給力,主要以看博文為學習方式。以下是小編對java的反射機制所產生的一些感悟,希望各位同學看到失誤之處不吝指出!
1.何謂反射機制
根據網文,java中的反射機制可以如此定義:
JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
2.反射機制如何實現
談到反射機制,最誘人的莫過於“動態”二字了。接觸過C語言的童鞋們都知道,C語言中也有個和“動態”搭上邊的函數:malloc()函數。其實這裏的兩個動態是一個意思,都指的是非編譯時處理,抑或運行時處理。這種機制,可以讓程序的彈性增加不少,因為藉由此機制,客户可以在程序運行時改變一些他關心的性質:分配內存(當然他可能 完全不知道這麼做了),調用某個類(當然他還是被矇在鼓裏)等。
下面我們就聊聊java中動態機制是如何實現的。
上一篇文章中提到了java的類的加載問題,但沒有更深入地解釋其運行機制,在這裏就先談談這個問題。
首先不得不提到的是s這個類。
有這麼一段話:
Java程序在運行時,Java運行時系統一直對所有的對象進行所謂的運行時類型標識。這項信息紀錄了每個對象所屬的類。虛擬機通常使用運行時類型信息選準正確方法去執行,用來保存這些類型信息的類是Class類。
也就是説,ClassLoader找到了需要調用的類時(java為了調控內存的調用消耗,類的加載都在需要時再進行,很摳但是很有效),就會加載它,然後根據s文件內記載的類信息來產生一個與該類相聯繫的獨一無二的Class對象。該Class對象記載了該類的字段,方法等等信息。以後jvm要產生該類的實例,就是根據內存中存在的該Class類所記載的`信息(Class對象應該和我所瞭解的其他類一樣會在堆內存內產生、消亡)來進行。
而java中的Class類對象是可以人工自然性的(也就是説開放的)得到的(雖然你無法像其他類一樣運用構造器來得到它的實例,因為
Class對象都是jvm產生的。不過話説回來,客户產生的話也是無意義的),而且,更偉大的是,基於這個基礎,java實現了反射機制。
-
如何使用java
Java是一種可以撰寫跨平台應用程序的面向對象的`程序設計語言。以下是小編為大家搜索整理的如何使用java,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!...
-
2017年3月計算機二級Java基礎知識習題
學習是把知識能力思維方法等轉化為你的私有產權的重要手段,是“公有轉私”的重要途徑。以下是本站小編彙總的2017年3月計算機二級Java基礎知識習題,歡迎學習!1、結構化程序設計主要強調的是______。A、程序的規模B、程序的易讀性C、程序的執行效率D、程序的可移...
-
java中String和StringBuffer的區別
java中String和StringBuffer的區別String這個類是Java中使用得最頻繁的類之一,以下就是小編精心推薦java中String和StringBuffer的區別,希望對大家有幫助!看到這個講解的不錯,所以轉一下在java中有3個類來負責字符的操作。acter是進行單個字符操作的,ng對一串字符...
-
講述java讀取properties文件的方法
講述java讀取properties文件的方法1.不在項目中讀取:Propertiesproperties=newProperties();BufferedReaderread=newBufferedReader(newInputStreamReader(newFileInputStream("文件的.路徑"),"utf-8"));(read);propertiesroperty("那個文件的key")2.在項目中讀...