Reflection機制也是通過(guò)Class類(lèi)對象來(lái)實(shí)現的.
個(gè)人感覺(jué)他只不過(guò)是通過(guò)Class類(lèi)對象暴露了一組共用的借口.我們可以查詢(xún)并調用之,而并不用知道某個(gè)特定類(lèi)的全部信息.事實(shí)上他并沒(méi)有什么特別的神奇之處,總感覺(jué)有點(diǎn)似曾相識,有點(diǎn)像COM中提供的IUNKNOWN接口,或者IDL語(yǔ)言的作用?
采用傳統RTTI:編譯器在編譯器即開(kāi)啟并檢查.class文件,但如果采用Reflection機制,編譯器并不會(huì )取用.class文件.它會(huì )由執行期環(huán)境加以開(kāi)啟和檢查.由此我們可以看出reflection的使用場(chǎng)合:JavaBeans,RMI,object serialization.或者無(wú)法得知某.class文件提供的接口時(shí).基本上我們編成的過(guò)程中不會(huì )直接用到Reflection.
查一下java.lang.reflection包,發(fā)現包含以下內容:
接口 Member
類(lèi) Array
Constructor
Field
Method
Modifier
異常 InvocationTargetException
聯(lián)系客服