gpt4 book ai didi

java - 在 Java 中将可变变量转换为不可变变量并减少痛苦

转载 作者:行者123 更新时间:2023-11-29 04:46:28 25 4
gpt4 key购买 nike

有时我别无选择地使用mutable 变量而不是immutable 变量我知道有多少种方法可以创建不可变变量,但我想知道这种方法是否也能正确转换它mutableimmutable 我不在我的代码中使用 concurrencymultithreading 只是好奇?

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 再次出现,如果可以,请切换到 Java 8/Joda Time 方式)。

不要向外界公开对 Date 成员的任何引用。相反,制作一份防御性副本并将其传回。您可能会考虑将时间值保存为最终的长实例成员,并仅在需要时实例化 Date。

关于java - 在 Java 中将可变变量转换为不可变变量并减少痛苦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com