簡體   English   中英

使用可變引用在Java中創建不可變類

[英]Creating Immutable class in Java with mutable reference

我不明白使Java中的類不可變的要求。 以下是我無法理解的要求:

1)如果實例字段包含對可變對象的引用,則不允許更改這些對象:

a)不要提供修改可變對象的方法。

b)不要共享對可變對象的引用。 永遠不要存儲對傳遞給構造函數的外部可變對象的引用; 如有必要,創建副本,並存儲對副本的引用。 同樣,在必要時創建內部可變對象的副本,以避免在方法中返回原始對象。

請用一個簡單明了的例子來解釋這個概念。

不要提供修改可變對象的方法

如果您不提供獲取器,並且該實例沒有從外部源傳遞給您的類(通常傳遞給構造函數),則只有您的類有權訪問此組合實例。

從不存儲對傳遞給構造函數的外部可變對象的引用

在Java中, 即使引用也是按值傳遞的 ,所以當將引用類型傳遞給類的構造函數時,您需要復制該實例(即,不要使用傳遞的實例,請使用實例的深層副本 )。

必要時創建內部可變對象的副本,以避免在方法中返回原始對象。

如果必須將引用類型返回給調用者,則應返回防御性副本,而不是原始實例的引用。

暫無
暫無

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

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