1、什么是Java反射機制
Java的反射機制是在程序運行時,能夠完全知道任何一個類,及其它的屬性和方法,并且能夠任意調(diào)用一個對象的屬性和方法。這種運行時的動態(tài)獲取就是Java的反射機制。其實這也是Java是動態(tài)語言的一個象征。
用一句話來概括反射就是加載一個運行時才知道的類以及它的完整內(nèi)部結構。
2、為什么要有Java反射機制
我們?yōu)槭裁匆肑ava的反射機制呢?
我認為有兩種:
第一種:反射的目的就是為了擴展未知的應用。比如你寫了一個程序,這個程序定義了一些接口,只要實現(xiàn)了這些接口的dll都可以作為插件來插入到這個程序中。那么怎么實現(xiàn)呢?就可以通過反射來實現(xiàn)。就是把dll加載進內(nèi)存,然后通過反射的方式來調(diào)用dll中的方法。
第二種:在編碼階段不知道那個類名,要在運行期從配置文件讀取類名, 這時候就沒有辦法硬編碼new ClassName(),而必須用到反射才能創(chuàng)建這個對象。
一個生活中常看到的例子有助于理解我們?yōu)槭裁匆肑ava的反射機制:你進了一家飯店,你不知道他們都有那些菜,要多少錢。那么你第一件事情是干啥“服務員拿個菜單過來”,然后指著菜單說“我要這個,我要那個”。
3、一起來看ReflectionAPI
在生活中,我們使用一個未知的東西的時候總會用幫助來解決我們的使用問題,電視機有幫助,電腦有幫助,幾乎所有的事物都攜帶著它的一本幫助,Java的反射機制也不例外。
在JDK中有Reflection API的幫助,它主要說明了什么是Java反射機制,這種反射機制提供了什么樣的屬性和方法,進一步我們能夠知道能夠通過它完成什么樣的工作。
下面咱就一起看看這部分的API。這些接口和類都位于lang包里。
如圖:

接口:

類:
