提个牛角尖问题
来源:8-4 栈封闭技术

洪小才
2022-11-10
/**
* 描述: 一个属性是对象,但是整体不可变,其他类无法修改set里面的数据
*/
public class ImmutableDemo {
private final Set<String> students = new HashSet<>();
public ImmutableDemo() {
students.add("李小美");
students.add("王壮");
students.add("徐福记");
}
public boolean isStudent(String name) {
return students.contains(name);
}
}
课程里说这是个不可变的对象。
因为老师您两门课我都买过,这里面会不会涉及对象发布不完全的问题,从而不好说对象是不可变的?
就是构造方法而言,多线程环境下,会不会造成students所含对象不同的问题,就是因为没发布完全。所以如果这个对象要发布完全,又得去走工厂方法了?也就是说走了工厂发布的这个对象,才可以说是一个不可变对象?!
之前那门课是3刷了,这门课是进行2刷
写回答
1回答
-
悟空
2022-11-12
多线程环境下,构造方法应该也是安全的,这个students是属于每个对象自己的。你觉得哪里会不安全呢
022022-11-14
相似问题
CAS ABA问题
回答 1
volatile修饰的静态变量问题
回答 2