簡體   English   中英

Java:關於克隆方法的問題

[英]Java :Questions on clone method

我在采訪中被問到了這些。

  1. 我們是否需要在並發環境中照顧克隆方法? 我們可以同步克隆方法嗎?

  2. 在單例類中使用克隆方法有意義嗎?

采訪中我沒有令人信服的答案。

  1. 大概是99.99%的時間是,但是您只需要像類中的任何其他方法一樣考慮克隆,並在必要時根據您的特定上下文對其進行同步。 同步在其基類中未同步的方法沒有任何問題。 另一方面,即使代碼編譯正常且未發出警告, 在覆蓋已同步方法時未同步方法也可能是一個錯誤

  2. 一個令人信服的答案可能是“不”,在“單例”設計模式中只說幾句話。

  1. 如果要克隆的對象可能會在其他線程中發生變化,則可能需要獲取某種[read]鎖,就像對它執行任何其他操作一樣。 從理論上講,如果新對象可能受到不安全的發布(我建議不要不安全地發布可變對象!),則需要鎖定該對象。

  2. 如果可以創建它的另一個實例,它就不會是單例的(存在單態反模式,就像單例反模式一樣,只會更糟,並且可能涉及多個對象而沒有明確的目的)。 我猜想如果您正在繼承實現Cloneable某個類的子類,則您想覆蓋clone並拋出CloneNotSupportedException可能,否則返回this

暫無
暫無

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

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