자바
레코드
winwin-k9
2023. 1. 16. 12:04
레코드란?
불변 데이터 객체를 쉽게 생성할 수 있도록 하는 새로운 유형의 클래스이다.
public class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
위와같은 VO를 생성한다고 해보자.
모든 필드에 final을 명시해야 하고, 생성자 와 getter가 필요하다.
이후 VO의 특성상 동일성 보장을 위한 hashCorde와 equal의 재정의와 toString 또한
후에 필요하게 된다.
이를 레코드를 통해 깔끔히 처리할 수 있다.
public record Person(String name, int age) {
}
레코드 클래스를 사용하면 훨씬 간결한 방식으로 동일한 불변 데이터 객체 정의할 수 있디.
- 이름(Person), 헤더(String name, int age), 바디({})
컴파일러는 헤더를 통해 내부 필드를 추론한다.
- 생성자를 작성하지 않아도 되고 toString, equals, hashCode 메소드에 대한 구현을 자동으로 제공
public class RecordDemo {
public static void main(String[] args){
Person person = new Person("Ted", 100);
System.out.println("이름:"+ person.name() + " 나이:"+person.age());
System.out.println("객체 정보:"+person.toString());
Person person2 = new Person("Ted", 100);
Person person3 = new Person("Dean", 200);
if (person.equals(person2)) System.out.println("person, person2는 같은 사람");
else System.out.println("person, person2는 다른 사람");
if (person.equals(person3)) System.out.println("person, person3는 같은 사람");
else System.out.println("person, person3는 다른 사람");
}
}
728x90