更新时间: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是一个不可变对象,一旦创建就不能修改其状态。
通过遵循上述模式,我们可以创建不可变对象,这有助于确保代码的可维护性、线程安全性和安全性。