1 回答
TA贡献1813条经验 获得超2个赞
只要您以不可变的方式公开对象的内部,就可以共享不可变对象的内部。
例如:
public class ImmutableObj {
private final String[] internals;
public ImmutableObj(String[] strings) {
internals = Arrays.copyOf(strings, strings.length);
}
public String[] getInternals() {
// return a copy of the internal state, since arrays
// do not offer an immutable view
return Arrays.copyOf(internals, internals.length);
}
}
数组是一个低效的例子,但它仍然是可能的。更高效的事情是将内部状态存储/公开为某种形式,Collection<String>以便您可以将内部设置为不可修改的对象:
public class ImmutableObj {
// Simply make this public instead of getter since it is read-only
public final List<String> internals;
public ImmutableObj(String[] strings) {
internals = Collections.unmodifiableList(Arrays.asList(strings));
}
}
添加回答
举报
