Q63: What are Java Records (Java 16+) and how do they eliminate boilerplate?

record is an immutable data carrier class. The compiler automatically generates final fields, canonical constructor, getters (field()), equals(), hashCode(), and toString().

  • Restrictions: Records cannot extend other classes (they implicitly extend java.lang.Record). Fields are strictly final.
Java Record Declaration
public record User(long id, String name, String email) {
    // Compact constructor for validation
    public User {
        Objects.requireNonNull(name, "Name cannot be null");
    }
}
💡 Compact constructor allows adding validation while generating immutable fields automatically.
Key Takeaways
  • Immutable data carrier class.
  • Generates fields, getters, equals, hashCode, and toString automatically.
Knowledge Check

Can a Java Record extend a class using the extends keyword?