反射,所有教科書都正兒八經(jīng)的講了,這里只能再隨便講兩句。

     反射是一種讓框架能夠根據(jù) "以字符串形式存在的信息" 來調(diào)用對(duì)象的屬性和函數(shù)的技術(shù),是Java對(duì)C++最大的進(jìn)步之一---讓框架編程真正走向平民化。MFC年代,無論侯捷如何深入淺出,還在念大學(xué)的我就是搞不懂那些注冊"消息--函數(shù)映射"的魔法宏。

     不過Java的反射也就是對(duì)著C++比較自豪而以,因?yàn)镃#,Ruby,Python甚至php都標(biāo)配了反射的功能。而且,人家的反射語法都是內(nèi)嵌在基礎(chǔ)Object類的,拿最弱的php來看:
$func_name="helloworld";
$foo->$func_name;

     而Java,卻搞出了Class,Methed, Field,Constructor這么一大堆類出來。本來這是Java設(shè)計(jì)師很嚴(yán)謹(jǐn),很cool的體現(xiàn),問題是它居然不提供一種集成的簡便的寫法......相同的情形還出現(xiàn)在Java的I/O 類庫里。
    微軟這方面就做得好些,懂得討好開發(fā)人員。

    因?yàn)镴ava的無情,就搞得大家的項(xiàng)目里要自制BeanUtils了。幸虧Apache Jakarta Commons 已經(jīng)做了一個(gè)比較好的,可以直接使用--以前寫的介紹文章
    另外Spring也做了一個(gè)。

    閑得沒事做的,還可以emule一本〈Relection in action〉回來看。

    而C++下面的"反射",見我偶像di文章。另還有一個(gè)比較BT的C++框架叫ACDK的,把自己整得和Java很像,有反射和垃圾收集,甚至和JSDK差不多的線程,Unicode,I/O,網(wǎng)絡(luò),XML API。可惜的是,即使到了C++0x, B大叔還是不準(zhǔn)備在語言級(jí)支持反射。

系列文章:
Java下的框架編寫(1)--序
Java下的框架編程(2)-對(duì)泛型的無聊用法和為擦拭法站臺(tái) 
Java下的框架編程(3)--關(guān)于反射的碎話 
Java下的框架編程(4)--Annotation vs XML vs Interface 最新一Round 
Java下的框架編程(5)--cglib應(yīng)用
Java下的框架編程(6)--asm(待寫)