[英]convert mutable variable to immutable in java with less pain
有時我沒有選擇使用mutable
變量而不是immutable
變量我知道有多少種方法可以創建不可變變量但是我想知道這種方式也正確它真正轉換為mutable
變為immutable
並且我不在我的代碼中使用concurrency
或多multithreading
只是好奇嗎?
public class Config implements FindIt {
....
private final class DateHolder{
private final Date dateContainDateObject;
DateHolder(String date) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
dateContainDateObject = dateFormat.parse(date);
}
public Date getDate(){
return dateContainDateObject;
}
}
}
這是嵌套類,我喜歡它
private DateHolder holder;
並在Config
構造函數類中填充holder
變量,所以holder
變量是ThreadSafe
?
日期是一個可變對象。 使它成為最終意味着你不能改變對它的引用,但你仍然可以改變引用的內容(java.util.Date/Calendar nastiness再次出現,如果可以的話,切換到Java 8 / Joda Time方式)。
不要將對Date成員的任何引用暴露給外部世界。 而是制作防御性副本並將其傳回。 您可以考慮將時間值保存為最終的長實例成員,並僅在需要時實例化Date。
當你創建私有和非靜態類時,可以說是安全的,當你創建表單Config類時,你只有一個DateHolder。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.