我只是想知道,如果它是可取的內部類實例訪問類變量使用getter方法,並且如果有任何實際的性能差異與直接訪問。特別是在jvm中預計會生成許多對象的情況下。是getter方法調用訪問變量比直接訪問變量更好的一類
回答
在Java中,通過getter/setters從類外部訪問所有字段是一個慣例。從課內,你通常直接訪問字段。但是,您也可以通過getter/setter訪問它們。
重要的是要知道,這只是一個約定。許多其他編程語言沒有這樣嚴格的規則或其他概念。所以你不會被迫這麼做。但這是一個很好的做法。
而且:不介意表現!使用getter/setter不會影響應用程序的性能。 JVM/Java被設計爲完全像這樣工作。每個JVM都會優化你的代碼並以一種非常有效的方式處理getter/setter。嘗試寫出清晰且可讀的代碼。
我會在三個部分回答你的問題:
1。直接訪問(公共成員)是最差的溶液:
公共成員可以從類,這對於實際的考慮是指「可能的任何地方」外部訪問。如果公共領域出現問題,罪魁禍首可能在任何地方,所以爲了追蹤錯誤,您可能需要查看相當多的代碼。
2。封裝(私有成員):
專用成員,相比之下,只能從同一個類內部訪問,因此如果出現錯誤與中,通常只有一個源文件來看待。如果你在你的項目中的萬行代碼,但你的類都可以保持很小,這可以通過1000
3倍,降低您的bug跟蹤的努力。 getter和setter高度過度:
創建私有字段,然後使用IDE自動生成getter和setter所有這些領域幾乎是使用公共字段壞。
過度使用的一個原因是在IDE中,現在只需點擊幾下即可創建這些訪問器。完全無意義的getter/setter代碼有時比一個類中的真實邏輯長,即使你不想要,你也會多次讀這些函數。
結論:
使用的存取器(getter和setter),然而,以限制到字段變量直接訪問優於使用公共字段,,使吸氣劑和setter用於每一個領域是矯枉過正。它也取決於情況,有時候你只是想要一個愚蠢的數據對象。訪問者應該被添加到他們真正需要的領域。一個類應該暴露使用其狀態的較大行爲,而不是由其他類操縱的狀態庫。
我相信getter方法調用比直接調用更好,因爲這將有助於找到來自內部類和外部類的所有引用。
- 1. 直接訪問實例變量與使用訪問器方法
- 2. 爲什麼HttpContext的是更好地訪問會話變量比直接會話
- 3. 訪問結構變量的getter setter方法裏面的C++類
- 4. 從變量類型類訪問方法
- 5. 無法訪問類變量
- 6. 訪問類變量無法
- 7. 訪問方法和變量
- 8. 類方法代碼應該直接訪問外部變量嗎?
- 9. 訪問父類的方法和變量
- 10. 訪問類變量
- 11. 訪問類變量
- 12. 訪問類變量?
- 13. 訪問類變量
- 14. Asp.Net,從前一頁訪問變量是一個好方法?
- 15. 方法鏈接和訪問變量
- 16. 訪問類變量模塊方法
- 17. 訪問變量的調用類java
- 18. 訪問一個類的常量變量
- 19. 直接訪問實例變量
- 20. fstream直接訪問結構體變量
- 21. 從另一種方法訪問變量
- 22. 訪問變量的CodeIgniter類
- 23. 訪問類變量 - Django的
- 24. 訪問變量
- 25. 訪問變量
- 26. 訪問變量
- 27. 訪問變量
- 28. 訪問變量
- 29. 訪問變量
- 30. 訪問變量
如果您需要限制變量訪問(例如,使變量只讀)或對變量更改執行一些操作(通知) - 最好使用getter/setter。 –
這是http://stackoverflow.com/q/8466790/217324的重複。雖然我不同意所選的答案(我發表了相反的意見)。 –
@NathanHughes您的回答正好是我希望有一種方式來接受評論作爲答案。 – Bwire