在 Java 里,immutable(不可变)对象本身是不能被修改的。一旦创建完成,它的状态(字段值)就固定了,任何“修改”操作都会返回一个新的对象,而不是改原来的。
典型例子:
StringInteger、Long 等包装类BigDecimalfinal class,字段都是 final 且不可变String s = "abc";
s = s + "d"; // 不是修改 s,而是生成新 String "abcd"
不能改对象内部状态,但可以:
BigDecimal a = new BigDecimal("10");
BigDecimal b = a.add(BigDecimal.ONE); // b 是新对象,a 不变
有时是因为:
class BadImmutable {
public final List<String> list = new ArrayList<>();
}
上面这个 不是真正的 immutable,因为 list 内容可变。
StringBuilder、ArrayList)如果你问的是 “Java 里能不能把 immutable 改成 mutable”,答案是:不能改类本身的设计,只能换类或重新创建对象。
如果你有具体代码场景(比如 String、record、自己写的类),可以发出来我帮你分析。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。