java 14에서 도입된 클래스
간단하게 데이터를 저장하고 옮기는 역할. 데이터의 유형만 갖고있음
데이터를 가진 클래스는
각각의 필드는
모든 필드가 일치할 때
클래스 이름, 각 필드 이름 및 해당 값을 포함하는 toString 메서드
를 만들 수 있다.
public class Person {
private final String name;
private final String address;
public Person(String name, String address) {
this.name = name;
this.address = address;
}
@Override
public int hashCode() {
return Objects.hash(name, address);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
} else if (!(obj instanceof Person)) {
return false;
} else {
Person other = (Person) obj;
return Objects.equals(name, other.name)
&& Objects.equals(address, other.address);
}
}
@Override
public String toString() {
return "Person [name=" + name + ", address=" + address + "]";
}
// standard getters
}
이렇게 되면 많은 사용코드가 생긴다. 각 필드에 대한 동일한 프로세스를 반복해야하고 추가코드로 인해 단순히 name과 address로 person을 나타낸다는 데이터 클래스의 목적을 모호하게 한다. ide가 자동으로 생성해주긴 하지만 필드가 추가될 경우 자동으로 업데이트 되지 못함
Record 클래스는 필드의 유형과 이름만 필요로 하는 불변 데이터 클래스다.
equals, hashCode, toString 메서드와 개인, 최종 필드 및 공용 생성자는 Java 컴파일러에 의해 생성됨
public record Person (String name, String address) {}
name()
, age()
, address()
)referernce
https://www.baeldung.com/java-record-keyword
https://velog.io/@rmswjdtn/JAVA-%EB%AC%B8%EB%B2%95-Record-Class