Создание неизменяемого класса в Java — пример с final-полями

В Java объект неизменяемого (immutable) класса нельзя изменить после создания. Самый известный пример — класс String: содержимое строки нельзя поменять после её создания.

Кроме того, можно создавать и собственные неизменяемые классы. Вот что для этого нужно сделать:

Примечание

  • объявить класс final, чтобы его нельзя было унаследовать;

  • все поля класса должны быть private, чтобы к ним нельзя было обратиться извне;

  • в классе не должно быть сеттер-методов, изменяющих значения полей;

  • геттер-методы должны возвращать копию полей;

  • поля должны инициализироваться только через конструктор.

Пример: программа на Java для создания неизменяемого класса

// class is declared final
final class Immutable {

  // private class members
  private String name;
  private int date;

  Immutable(String name, int date) {

    // class members are initialized using constructor
    this.name = name;
    this.date = date;
  }

  // getter method returns the copy of class members
  public String getName() {
    return name;
  }

  public int getDate() {
    return date;
  }

}

class Main {
  public static void main(String[] args) {

    // create object of Immutable
    Immutable obj = new Immutable("Programiz", 2011);

    System.out.println("Name: " + obj.getName());
    System.out.println("Date: " + obj.getDate());
  }
}

Вывод:

Name: Programiz
Date: 2011

В этом примере мы создали неизменяемый класс с именем Immutable.