-1
我有變異對象的代碼,並且不對,即它把它與作爲不可變對象的其他代碼。 但是在具有並行工作任務的設置中,只有在可以確保某些對象不會被第三方或庫代碼修改時才能可靠地工作,這些代碼可能在我的代碼範圍之外有引用時發生。 一種可能性是始終傳遞副本而不是原始對象。但是,如果人們知道其他地方沒有其他引用其他物體的引用,那麼有時可以節省內存和時間。
這裏是一個僞編碼,將採取一個對象,並返回一個相同的「不可改變的」一個普通的「凍結」的方法:
public <T> T freeze(T x) {
if immutable anyway then return x
else if "not referenced in other objects" then return x
else if x clonable then return clone of x
else if x serializable then return serialized/deserialized x
else ....
}
我所尋找的是「沒有其他對象引用」部分。
有什麼建議嗎?