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