📜  Java 如何创建不可变类(1)

📅  最后修改于: 2023-12-03 15:15:59.864000             🧑  作者: Mango

Java 如何创建不可变类

在 Java 中,不可变类是一种状态不能被修改的类。在实现不可变类时需要注意以下几点:

  1. 关键字final应用于类、方法和变量时分别表示:
  • 用 final 修饰类时,表示这个类不能被继承;
  • 用 final 修饰方法时,表示这个方法不能被子类重写;
  • 用 final 修饰变量时,表示这个变量只能被赋值一次,即为常量。
  1. 属性值不可被修改。这可以通过将属性声明为final实现。

  2. 不提供修改状态的方法。即不提供setter方法。

下面是一个不可变的Person类的示例:

public final class Person{
    private final String name;
    private final int age;

    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }

    public String getName(){
        return name;
    }

    public int getAge(){
        return age;
    }
}

在这个示例中,Person类被声明为final,属性nameage都被声明为final,而且没有任何setter方法来修改属性值。

通过这些限制,Person类成为了一个不可变的类,即使其对象被传递给其他方法,也不会被修改。

总结一下,实现不可变类可以带来以下好处:

  1. 不可变性避免了对象在多线程环境下被意外修改的问题,从而简化了并发编程;
  2. 不可变性优化了效率。由于不可变类的属性值是不可变的,所以可以被缓存,从而避免了重复创建对象的开销。