為什麼要用反射呢,既然在開發時就能夠寫好**,幹嘛還放到執行期去做,不光繁瑣,而且效率也受影響。
帶著這個疑問,google了一把,找到乙個非常好的解釋:
1)當你做乙個軟體可以安裝外掛程式的功能,你連外掛程式的型別名稱都不知道,你怎麼例項化這個物件呢?因為程式是支援外掛程式的(第三方的),在開發的時候並不知道 。所以,無法在**中 new出來 ,但反射可以, 通過反射, 動態引導程式集, 然後讀出類, 檢查標記 (特性 attributable)之後再例項化物件。就可以獲得正確的類例項。反射的目的就是為了擴充套件未知的應用。比如你寫了乙個程式,這個程式定義了一些介面,只要實現了這些介面的dll都可以作為外掛程式來插入到這個程式中。那麼怎麼實現呢?就可以通過反射來實現。就是把dll載入進記憶體,然後通過反射的方式來呼叫dll中的方法。很多任務廠模式就是使用的反射。
2)在編碼階段不知道那個類名,要在執行期從配置檔案讀取類名, 這時候就沒有辦法硬編碼new classname(),而必須用到反射才能建立這個物件.
不過反射還是能不用就盡量不用,畢竟是要耗費效能的
為什麼要選擇ISP 為什麼要選擇AHD
在影象傳輸中,我們為什麼選擇nextchip?為什麼要選擇isp?為什麼要選擇ahd?為什麼選擇北京冠宇銘通?這個問題我倒著回答各位 一 北京冠宇銘通科技是nextchip目前為止唯一一家正式官方授權 車載產品廠家之一 二 ahd和其他幾種傳輸方式相比,擁有自己的專利,其他幾家有專利的沒有幾個,如果...
為什麼要分詞
這裡不討論這個問題,我要說的為什麼要分詞?分詞是什麼!有人問 分詞有什麼作用啊?某人答 搜尋引擎要用到中文分詞,所以非常重要 這完全是廢話,說了等於沒說。搜尋引擎又為什麼要分詞呢?其實一般意思上指的分詞是比較狹隘的意思,指中文的詞是怎樣劃分的。因為中文沒有空格,所以要理解一篇文 章,你首先當然要切分...
為什麼要重構
在現實工作中,重構 更多被用來成為彌補缺陷 增加功能 修改設計等工作,而很多人潛意識裡也認為重構就是修改 重寫 而這往往曲解了重構的本意。重構是乙個過程,是建立在不違背外在行為的前提下,對 進行修改,改進程式的內部結構。重構不等於重新設計,軟體工程裡一定要先進行設計,再進行編碼,而如果你在之後對設計...