1 回答

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
只要您以不可變的方式公開(kāi)對(duì)象的內(nèi)部,就可以共享不可變對(duì)象的內(nèi)部。
例如:
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);
}
}
數(shù)組是一個(gè)低效的例子,但它仍然是可能的。更高效的事情是將內(nèi)部狀態(tài)存儲(chǔ)/公開(kāi)為某種形式,Collection<String>以便您可以將內(nèi)部設(shè)置為不可修改的對(duì)象:
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));
}
}
添加回答
舉報(bào)