3 回答

TA貢獻1827條經驗 獲得超4個贊
取決于你的程序場景 反射可以解決靜態編譯時不確定運行庫是否有某個API的情況
比如android開發時,一個系統API是4.0以上SDK才有的,但是你的程序需要在2.3以上版本運行
那么如果你顯式的直接調用這個API,那么就會編譯不通過
這時使用反射機制就可以繞過靜態語言的編譯時檢查,等到運行時才做檢查.
可以認為是削弱系統耦合程度的一種方式
所有的功能都是針對某些場景存在的,你遇到了就有用,遇不到就沒用

TA貢獻1828條經驗 獲得超3個贊
反射用的不多,大多數時候你用不上它。但:
文件操作API也用的不多,但你有業務需求的時候沒它不行;
線程用的不多,但有時候沒線程程序幾乎跑不起來;
LinkedList也用的不多,但在某些情況下它的效率要比ArrayList要高幾十倍;
TreeMap也用的不多,但有時候它能簡化你的代碼;
接口(interface)也不是必須的,你可以不寫interface完成幾乎所有的功能;
甚至,面向對象也不是必須的,你可以用過程式的代碼完成別人用幾十個類做的功能;
知識學到了是自己的,何必搞得好像是被迫學習一樣,有這個提問的時間都學完了。
P.S. 補充一下:
對于J2EE來說,Hibernate之類的ORM全都基于動態字節碼和反射技術,Spring等IoC框架也基于動態代理(有時是動態字節碼)和反射技術,各類流行的MVC也是Servlet+反射的實現。
對于Android來說,其本身的Context.startActivity/sendBroadcast等都是基于反射,如Gson/Jackson等JSON-ORM都是基于反射,反射技術還能解決部分跨進程調用問題及系統hack。
添加回答
舉報