Record — immutable data carrier class (Java 14+). Reduces boilerplate for simple data objects.
Key features:
name() not getName()).Complete example:
1public record Person(String name, int age) {2 // Canonical constructor auto-generated3 // name() and age() getters auto-generated4 // equals(), hashCode(), toString() auto-generated5}67// Usage8Person p = new Person("Alice", 25);9String name = p.name(); // getter10int age = p.age(); // getter11System.out.println(p); // Person[name=Alice, age=25]1213// Records are immutable14Person p2 = p.withName("Bob"); // creates new instance
Why it matters:
Common mistakes:
get prefix (use name() not getName()).When to use:
When NOT to use: