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));
}
}
添加回答
舉報