Reflection是Java被視為動(dòng)態(tài)(或準(zhǔn)動(dòng)態(tài))語言的一個(gè)關(guān)鍵性質(zhì)。這個(gè)機(jī)制允許程序在運(yùn)行時(shí)透過Reflection APIs取得任何一個(gè)已知名稱的class的內(nèi)部信息,包括其modifiers(諸如public,static等等),superclass(例如Object),實(shí)現(xiàn)之interfaces(例如Cloneable),也包括fields和methods的所有信息。并可以運(yùn)行時(shí)改變fields內(nèi)容或喚起methods。
程序運(yùn)行時(shí),允許改變程序結(jié)構(gòu)或變量類型,這種語言稱為動(dòng)態(tài)語言,從這觀點(diǎn)看,Perl,Python,Ruby是動(dòng)態(tài)語言,而C++,Java,C#是動(dòng)態(tài)語言。
盡管在這樣的定義下與分類下Java不是動(dòng)態(tài)語言,它確實(shí)有著一個(gè)非常突出的動(dòng)態(tài)相關(guān)機(jī)制:Reflection(反射,映象,倒影),用在Java身上指的是我們可以在運(yùn)行時(shí)加載,探知,使用編譯期間完全未知的class。
posted on 2007-07-06 11:54
周銳 閱讀(267)
評(píng)論(0) 編輯 收藏 所屬分類:
Java