也許私人靜態方法和屬性等如果您可以通過反射訪問私有構造函數,那有什麼意義?
回答
訪問修飾符有助於直接程序流。它們就像交通信號 - 你不必遵守它們,在某些情況下,授權的玩家可能會選擇忽略它們,但是你通常要尊重它們,因爲它們使一切運行得更加順暢。
私人構造函數通常用於設計模式(例如,Factory Method Pattern,Singleton Pattern)以防止對象被錯誤地實例化。
如果您不需要訪問任何實例變量(編譯器不必檢查對象是否非空),則私有靜態方法通常會更快地調用。
反射被認爲是一種比通常的訪問類更強大的方式 - 建議非受控代碼的非公開訪問被拒絕 - 請參閱ReflectionPermission。
沒有性ReflectionPermission,代碼可以 使用反射來訪問對象只的 公共成員。代碼與 ReflectionPermission和 相應的ReflectionPermissionFlag 標誌可以訪問受保護的和 私有成員的對象。
注意
因爲性ReflectionPermission 可以訪問非公共類型 和成員,我們建議您不要 不予性ReflectionPermission到 互聯網代碼,除了與 ReflectionPermissionFlag.RestrictedMemberAccess 標誌。 RestrictedMemberAccess允許 訪問非公共成員,與 限制該授予集的 非公共成員的必須等於, 或子集,授予集的 代碼的訪問的非公開 成員。一樣的,與在第一時間與裝配基準設定訪問修飾符,爲直接客戶 -
換句話說,人如果你讓他們只能訪問類的內部。任何成員只有在讓其可見時纔可見。
此行爲在Silverlight運行時中不同,其中基本上反射只能執行編譯器(C#或VB)允許的內容。 因此,在Silverlight中,即使使用Activator.CreateInstance,也不能使用私有構造函數實例化。
- 1. 爲什麼序列化可以訪問私有構造函數?
- 2. Java:通過構造函數調用構造函數,有什麼意義?
- 3. 通過getter和setter(accessor)函數訪問私有變量有什麼意義?
- 4. java構造函數有什麼意義?
- 5. 構造函數GeoPoint(double,double)未定義。那有什麼問題?
- 6. 爲什麼枚舉可以包含私有構造函數?
- 7. Java:訪問帶有類型參數的私有構造函數
- 8. 通過什麼邏輯,實例構造函數可以訪問靜態字段
- 9. 定義私有類的構造函數
- 10. 如果Rails可以通過關聯訪問其他模型的屬性,那麼有外鍵的意義何在?
- 11. 通過反射訪問Java中的私有變量
- 12. 我如何訪問一個類的私有構造函數?
- 13. 如何通過反射訪問以Underscore開頭的「私有虛擬」屬性
- 14. 通過定義默認私有構造函數使類不可繼承
- 15. 一個類可以有公共和私有構造函數嗎?
- 16. 在構造函數中使用「this」有什麼意義?
- 17. 什麼時候使用私有構造函數有用?
- 18. 訪問私有數據的構造函數
- 19. 是否可以通過反射來設置私有財產?
- 20. 有沒有什麼方法可以通過PHP程序訪問ASP函數呢?
- 21. 爲什麼有一個私有構造
- 22. 通過反射發射在構造函數中分配字段
- 23. 有什麼辦法可以在Python中訪問模塊的私有函數嗎?
- 24. 爲什麼我可以從全局範圍調用私有構造函數?
- 25. 構造函數不能訪問自己類的私有成員
- 26. Javascript構造函數訪問自己的私有方法?
- 27. 如何通過反射在java中調用構造函數?
- 28. 如何從多個私人構造函數中反映私人構造函數
- 29. 如何限制開發人員使用反射訪問Java中的私有方法和構造函數?
- 30. Java:爲什麼構造函數具有訪問修飾符?