1. 程式人生 > >反射的作用與優缺點

反射的作用與優缺點

優點:靈活
java的反射機制就是增加程式的靈活性,避免將程式寫死到程式碼裡, 例如: 例項化一個 person()物件, 不使用反射, new person(); 如果想變成 例項化 其他類, 那麼必須修改原始碼,並重新編譯。 使用反射: class.forName("person").newInstance(); 而且這個類描述可以寫到配置檔案中,如 **.xml, 這樣如果想例項化其他類,只要修改配置檔案的"類描述"就可以了,不需要重新修改程式碼並編譯。 增加程式的靈活性。 如struts中。請求的派發控制。 當請求來到時。struts通過查詢配置檔案。找到該請求對應的action。已經方法。 然後通過反射例項化action。並呼叫響應method。 如果不適用反射,那麼你就只能寫死到程式碼裡了。 所以說,一個靈活,一個不靈活。 很少情況下是非用反射不可的。大多數情況下反射是為了提高程式的靈活性。 因此一般框架中使用較多。因為框架要適用更多的情況。對靈活性要求較高。

缺點:效能低,不夠安全,可能出現非正常情況的情況


1反射包括了一些動態型別,所以 JVM 無法對這些程式碼進行優化。因此,反射操作的效 
率要比那些非反射操作低得多。我們應該避免在經常被 執行的程式碼或對效能要求很高的程 
序中使用反射。
2使用反射技術要求程式必須在一個沒有安全限制的環境中執行。如果一個程式必須在有 
安全限制的環境中執行,如 Applet,那麼這就是個問題了。
3由於反射允許程式碼執行一些在正常情況下不被允許的操作(比如訪問私有的屬性和方 
法),所以使用反射可能會導致意料之外的副作用--程式碼有功能上的錯誤,降低可移植性。 
反射程式碼破壞了抽象性,因此當平臺發生改變的時候,程式碼的行為就有可能也隨著變化。