1)當你作一個軟件能夠安裝插件的功能,你連插件的類型名稱都不知道,你怎麼實例化這個對象呢?由於程序是支持插件的(第三方的),在開發的時候並不知道 。因此,沒法在代碼中 New出來 ,但反射能夠, 經過反射, 動態加載程序集, 而後讀出類, 檢查標記 (特性 attributable)以後再實例化對象。就能夠得到正確的類實例。反射的目的就是爲了擴展未知的應用。好比你寫了一個程序,這個程序定義了一些接口,只要實現了這些接口的dll均可以做爲插件來插入到這個程序中。那麼怎麼實現呢?就能夠經過反射來實現。就是把dll加載進內存,而後經過反射的方式來調用dll中的方法。不少工廠模式就是使用的反射。性能
2)在編碼階段不知道那個類名,要在運行期從配置文件讀取類名, 這時候就沒有辦法硬編碼new ClassName(),而必須用到反射才能建立這個對象.編碼
不過反射仍是能不用就儘可能不用,畢竟是要耗費性能的spa