Java Records, a feature introduced in Java 14, has been a game-changer for developers, especially when it comes to creating immutable data classes with minimal boilerplate. One of the key features of records is their built-in getter methods, which provide a straightforward way to access the data they hold. In this blog post, we’ll dive into a more complex example of Java Records, demonstrating how their getters work and the simplicity they bring to Java programming.
Understanding Java Record Getters
Java Records automatically generates public getter methods for each field. These getters are named after the fields themselves, making them intuitive to use. Unlike traditional classes, where you define explicit getters, records streamline this by creating them implicitly.
A Complex Example with Java Records
Let’s explore a complex example that showcases the power of getters in Java Records. We'll create a record that represents a Book, which in turn contains a record for the Author.
Step 1: Define the Records
First, we define the Author and Book records.
public record Author(String name, String nationality) {}
public record Book(String title, Author author, int yearPublished) {}
In these records, Author has fields name and nationality, and Book has title, an Author, and yearPublished.
Step 2: Using the Records
Now, let’s create instances of these records and use their getters.
public class Main {
public static void main(String[] args) {
Author rowling = new Author("J.K. Rowling", "British");
Book harryPotter = new Book("Harry Potter", rowling, 1997);
System.out.println("Book Title: " + harryPotter.title());
System.out.println("Author: " + harryPotter.author().name());
System.out.println("Author Nationality: " + harryPotter.author().nationality());
System.out.println("Year Published: " + harryPotter.yearPublished());
}
}
Output
Running the above code will produce the following output:
Book Title: Harry Potter Author: J.K. Rowling Author Nationality: British Year Published: 1997
Explanation
In this example, the Book record seamlessly integrates an Author record. Accessing the Author's details through the Book record demonstrates how getters in records can handle nested data structures elegantly.The lines harryPotter.author().name() and harryPotter.author().nationality() show how you can chain getters to access nested record fields. This chaining is intuitive and concise, making code easier to read and maintain.
Comments
Post a Comment
Leave Comment