TGViewer
Java Developer Java Developer @java_tg · 14.8K subscribers
Post #1414 5.32K
👩‍💻 Records

Records (записи) — это новая концепция, представленная в Java 14, которая позволяет создавать простые, неизменяемые классы-контейнеры данных.

Как правило, мы можем использовать записи в любой ситуации, когда нужно объявить простые контейнеры данных с неизменяемыми свойствами и автоматически сгенерированными методами.

Если раньше класс Student мы оформляли так:
public final class Student {
private final String name;
private final int age;

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

public String getName() {
return name;
}

public int getAge() {
return age;
}
}


То сейчас нам не придётся писать кучу шаблонного кода (геттеры/сеттеры, методы toString(), equals() и hashCode()):
public record Student(String name, int age) {}


Хочешь добавить метод? Легко:
public record Student(String name, int age) {
public void sayHello() {
System.out.println("Hello");
}
}


Кстати, если заглянуть в байт-код после компиляции, можно увидеть несколько интересных моментов:
⏺ Компилятор заменил ключевое слово Record на class.

⏺ Компилятор объявил класс как final. Это указывает на то, что этот класс не может быть расширен. Это также означает, что он не может быть унаследован и неизменен по своей природе.

⏺ Преобразованный класс расширяет java.lang.Record. Это указывает на то, что все записи являются подклассом класса Record, определенного в пакете java.lang.

⏺ Компилятор добавляет параметризованный конструктор.

⏺ Компилятор автоматически сгенерировал методы toString(), hashCode() и equals().

⏺ Компилятор добавил методы для доступа к полям. Обратите внимание на соглашение об именах методов — они точно совпадают с именами полей, перед именами полей не должно быть get или set.


100 🕺 — и я пишу новый пост

➡️ Java Developer | #records
  • ❤ 6
  • 👍 2
More from @java_tg
  1. Oct 10, 2026👩‍💻 Как ускорить UI-тесты на Java в несколько раз Автор предлагает превратить логин из U…
  2. Oct 9, 2026👩‍💻 REST или GraphQL: что лучше для backend В статье оба подхода разбираются на практиче…
  3. Oct 8, 2026👩‍💻 Что такое API и зачем оно нужно? Простой разбор API, endpoints, JSON и взаимодействи…
  4. Oct 7, 2026👩‍💻 Большая база вопросов для Java-собеседований Основные разделы: 🫡 Java Core и JVM; �…
  5. Oct 6, 2026Post #4392
  6. Oct 6, 2026👩‍💻 Что реально спрашивают на Java-собеседованиях Разбор 247 интервью: HashMap, equals/h…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →