首页常见问题正文

什么是不可变对象(immutable object)?Java中怎么创建一个不可变对象?

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

IT培训班

  不可变对象(Immutable Object)是指一旦创建后,其状态就不能被修改或改变的对象。在Java中,不可变对象具有以下特征:

  1.状态不可变性(State Immunity):对象的属性值不能被修改。

  2.线程安全性(Thread Safety):由于不可变对象的状态不能改变,多线程访问时不需要额外的同步措施,因此是线程安全的。

  3.安全性(Security):不可变对象的值不能被恶意修改,因此适用于安全敏感的上下文。

  4.可重用性(Reusability):由于不可变对象的状态不变,可以在不担心副作用的情况下多次使用。

  要创建一个不可变对象,需要采取以下几个步骤:

  1.使类声明为final

  通过将类声明为final,防止其他类继承该类,从而防止子类修改其状态。

  2.声明属性为private和final

  确保属性不能被外部直接访问,并且一旦赋值后就不能再修改。

  3.不提供修改状态的方法

  不要提供修改对象状态的方法,包括setter方法。

  4.提供只读方法

  提供方法来获取对象的属性值,但不要提供方法来修改属性值。

  以下是一个示例,演示如何创建一个不可变的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是一个不可变对象,一旦创建就不能修改其状态。

  通过遵循上述模式,我们可以创建不可变对象,这有助于确保代码的可维护性、线程安全性和安全性。

分享到:
在线咨询 我要报名
和我们在线交谈!