更新时间:2023-08-23 来源:黑马程序员 浏览量:

不可变对象(Immutable Object)是指一旦创建后,其状态就不能被修改或改变的对象。在Java中,不可变对象具有以下特征:
1.状态不可变性(State Immunity):对象的属性值不能被修改。
2.线程安全性(Thread Safety):由于不可变对象的状态不能改变,多线程访问时不需要额外的同步措施,因此是线程安全的。
3.安全性(Security):不可变对象的值不能被恶意修改,因此适用于安全敏感的上下文。
4.可重用性(Reusability):由于不可变对象的状态不变,可以在不担心副作用的情况下多次使用。
通过将类声明为final,防止其他类继承该类,从而防止子类修改其状态。
确保属性不能被外部直接访问,并且一旦赋值后就不能再修改。
不要提供修改对象状态的方法,包括setter方法。
提供方法来获取对象的属性值,但不要提供方法来修改属性值。
以下是一个示例,演示如何创建一个不可变的Java类:
public final class ImmutablePerson {
private final String name;
private final int age;
public ImmutablePerson(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}在这个示例中,ImmutablePerson类具有两个私有的final属性,它们只能在构造函数中初始化,并且没有提供修改它们的方法。因此,ImmutablePerson是一个不可变对象,一旦创建就不能修改其状态。
通过遵循上述模式,我们可以创建不可变对象,这有助于确保代码的可维护性、线程安全性和安全性。
毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03AI智能应用开发课程紧贴企业刚需,全程高效学习,直达中高级软件开发水平
2026-02-28风口正劲!黑马程序员又一AI智能应用开发班毕业当天100%就业!
2026-02-27