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 strictlyfinal.
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, andtoStringautomatically.
Knowledge Check
Can a Java Record extend a class using the extends keyword?