팀원의 제안으로 dto 작성 시 record 타입을 사용하게 되었다
데이터를 저장하고 전달하기 위한 불변 객체를 생성하는 데 사용되는 새로운 클래스 타입
public record Person(String name, int age) {}
이 선언으로 아래와 같은 내용을 포함할 수 있다
public final class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String name() {
return name;
}
public int age() {
return age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person person)) return false;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "Person[name=" + name + ", age=" + age + "]";
}
}
public record Person(String name, int age) {
public Person {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
}
}
public record Person(String name, int age) {
public String greet() {
return "Hello, " + name + "!";
}
}