Open In App

Record Patten with Switch in Java 19

Last Updated : 07 Jun, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will learn how to use the Record Pattern with Switch statements in Java 19 to create more maintainable, readable code. With the Record Pattern and Switch, we can create cleaner and more efficient code, making our programming experience more productive. As we all know switch statements help to allow for pattern matching. So we can use it for pattern matching to match against specific properties of objects.

What is Record in Java?

In Java, Record is a type of class that is designed to handle immutable data. A record is Declared using the record keyword. Here you can learn more about Record in Java.

Syntax:

public record Person(int Name, int age) {}

Here you can learn more about Java Switch statement. For example, we are going to see how can we match an Employee Record by the Name of the Employee.

Step By Step Implementation

Step 1: Creating a Java Project 

To Create a Java Project in IntelliJ Idea you can refer to Creating First Java Application in IntelliJ IDEA in this article. If you wish to use other IDE then you can also use.

Step 2: Create a Record Class

In this step, we are going to Create an Employee Record Class using the record keyword. It Contains four fields such as employee name, Age, Salary, and Designation. Below is the code for Employee Record in Java Comments are added for a better understanding of the Code.

Java




// EmployeeRecord class with four fields
public record EmployeeRecord(String name, int age,int Salary,String designation) {}


Step 3: Creating Switch Cases 

In this step, we are going to create Switch Cases to Display an Employee Record by Employee Name. Below is the function for Switch case implementation. Comments are added for Better Understanding.

Java




// funtion for print Employee Details by Employee Name 
public static void printEmployeeDetails(EmployeeRecord employee) {
        // Switch Case to match Employee Name and print Details
        switch(employee.name()) {
            case "Ramcharan": {
                System.out.println(employee.name() + " is " + employee.age() + " years old, " + "Salary = " + employee.Salary() + " Designation = " + employee.designation());
                break;
            }
            case "Chinmaya Mohapatra": {
                System.out.println(employee.name() + " is " + employee.age() + " years old, " + "Salary = " + employee.Salary() + " Designation = " + employee.designation());
                break;
            }
            case "Sam": {
                System.out.println(employee.name() + " is " + employee.age() + " years old, " + "Salary = " + employee.Salary() + " Designation = " + employee.designation());
                break;
            }
            case "Sai": {
                System.out.println(employee.name() + " is " + employee.age() + " years old, " + "Salary = " + employee.Salary() + " Designation = " + employee.designation());
                break;
            }
            default: {
                System.out.println("Employee Not Found.");
                break;
            }
        }
    }


Step 4: Calling printEmployeeDetails Function

Here we have to call the printEmployeeDetails Method prepared in the Previous step and we have to make some EmployeeRecord Object and pass these objects to the printEmployeeDetails function for Record Matching. Below is the Code. Comments are added for a Better Understanding.

Java




public class Main {
    public static void main(String args[]){
        // Creating some objects of EmployeeRecord
        EmployeeRecord ram = new EmployeeRecord("Ramcharan", 25,30000,"SDE I");
        EmployeeRecord chinmaya = new EmployeeRecord("Chinmaya Mohapatra", 30,50000,"SDE II");
        EmployeeRecord sam = new EmployeeRecord("Sam", 40,80000,"SDE II");
        EmployeeRecord sai = new EmployeeRecord("Sai", 24,60000,"SDE I");
          
        // Calling printEmployeeDetails funtion
        printEmployeeDetails(ram);
        printEmployeeDetails(chinmaya);
        printEmployeeDetails(sam);
        printEmployeeDetails(sai);
    }
    // funtion for print Employee Details by Employee Name 
    public static void printEmployeeDetails(EmployeeRecord employee) {
        // Switch Case to match Employee Name and print Details
        switch(employee.name()) {
            case "Ramcharan": {
                System.out.println(employee.name() + " is " + employee.age() + " years old, " + "Salary = " + employee.Salary() + " Designation = " + employee.designation());
                break;
            }
            case "Chinmaya Mohapatra": {
                System.out.println(employee.name() + " is " + employee.age() + " years old, " + "Salary = " + employee.Salary() + " Designation = " + employee.designation());
                break;
            }
            case "Sam": {
                System.out.println(employee.name() + " is " + employee.age() + " years old, " + "Salary = " + employee.Salary() + " Designation = " + employee.designation());
                break;
            }
            case "Sai": {
                System.out.println(employee.name() + " is " + employee.age() + " years old, " + "Salary = " + employee.Salary() + " Designation = " + employee.designation());
                break;
            }
            default: {
                System.out.println("Employee Not Found.");
                break;
            }
        }
    }
}


Output:

Ramcharan is 25 years old, Salary = 30000 Designation = SDE I
Chinmaya Mohapatra is 30 years old, Salary = 50000 Designation = SDE II
Sam is 40 years old, Salary = 80000 Designation = SDE II
Sai is 24 years old, Salary = 60000 Designation = SDE I

Process finished with exit code 0


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads