[英]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.