簡體   English   中英

如果getter返回可變對象的副本,是否需要在不可變的類中設置最終實例變量

[英]Is it required to set final instance variables in immutable class if copy of mutable objects is returned by getters

如果沒有公共設置器和私有訪問權,在創建不可變類時是否需要將實例變量聲明為final?

它不是必需的,因為如果不這樣做,在編譯器中將不會編譯。 但是,如果變量是不可變的,則添加final將使您的意圖向其他程序員(和您自己,明天再次查看代碼並對此感到疑惑時)清晰明了,可能有助於編譯器生成更有效的代碼,並使以后編譯器抱怨您確實嘗試更改該變量,這當然可能會有所幫助,並且可能表明代碼更改可能不是理想的選擇,您應該考慮一種替代解決方案。

不,這不是必需的:由於不能從子類訪問私有變量,因此只要您自己的代碼不違反不變性規則,您的類就將保持不變。

這就是說,將這些變量final標記為保護您的代碼免受他人*維護您的代碼的肯定是一件好事。

*甚至是兩年后您自己的錯誤,那時您忘記了有關課堂的許多細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM