Java에서 레코드란 무엇입니까? 어떤 문제를 해결합니까?

데이터 집약적 애플리케이션의 경우 요구 사항에 따라 데이터를 보유할 수 있는 Java 클래스를 작성합니다.

대부분의 경우 다음을 정의해야 합니다.
  • 변수 정의
  • 생성자 정의
  • getter 및 setter 메서드 정의
  • equals() 및 hashCode() 메서드 재정의
  • toString() 메서드 재정의

  • 이들 중 일부는 IDE에서 자동 생성될 수 있지만 데이터 요소의 수가 증가함에 따라 코드 줄이 늘어납니다.

    레코드가 구출되어 지금까지 작성해야 했던 모든 상용구 코드를 줄입니다. 레코드는 Java SE 14의 미리 보기 기능으로 Java 언어로 도입되었습니다.

    레코드를 정의하는 방법?

    public record EmployeeRecord(String name, int employeeNumber) {
    }
    


    레코드는 클래스처럼 인스턴스화할 수 있으며 속성은 getter 메서드로 액세스할 수 있습니다[getter 메서드 이름은 getXXXX()로 시작하지 않음]

    public class RecordExampleTest {
        public static void main(String[] args) {
            EmployeeRecord employeeRecord = new EmployeeRecord("Pradipta", 123);
            System.out.println(String.format("Employee Name : %s , Employee Number : %s",
                    employeeRecord.name(), employeeRecord.employeeNumber()));
        }
    }
    


    Cannonical Constructor로 알려진 생성자가 자동으로 생성됩니다. toString(), equals() 및 hashCode() 메서드와 같은 메서드도 암시적으로 자동 생성됩니다.

    기억해야 할 몇 가지 사항:
  • 인스턴스 메서드 및 정적 메서드는 레코드 내에서 만들 수 있습니다.
  • 레코드 내에서 정적 필드를 선언할 수 있습니다.
  • 레코드 내에서 인스턴스 필드를 선언할 수 없습니다.
  • 레코드는 암시적으로 레코드 클래스를 확장하므로 다른 클래스를 확장할 수 없습니다. Java는 다중 상속을 지원하지 않으므로 레코드는 다른 클래스를 확장할 수 없습니다.
  • 레코드는 암시적으로 최종적입니다. 다른 클래스로 확장할 수 없습니다.
  • 레코드는 인터페이스를 구현할 수 있습니다.
  • 레코드가 기본적으로 정식 생성자를 제공하지만 사용자 정의 생성자도 생성할 수 있습니다. 모든 인수가 레코드에 언급된 대로 설정되면 인수를 언급하고 명시적으로 설정할 필요가 없습니다. 이는 컴팩트 생성자라고도 합니다. 일부 사용자 지정 논리를 구현해야 하는 경우 소형 생성자가 유용할 수 있습니다.

  • 위에서 언급한 사항은 다음과 같이 나타낼 수 있습니다.

    public record EmployeeRecord(String name, int employeeNumber) {
        private static final String DEFAULT_VALUE = "default-value";
    
        public EmployeeRecord {
            if(employeeNumber < 0)
                throw new IllegalStateException("Employee Numbers cannot be negative");
        }
        public String generateUniqueNumber() {
            return name + "-" + employeeNumber;
        }
    
        public static void printSomething() {
            System.out.println("Print anything here...." + DEFAULT_VALUE);
        }
    }
    

    좋은 웹페이지 즐겨찾기