728x90
JDK 14?부터 도입되었으며, 데이터 클래스이며,
순수하게 데이터를 보유하기 위한 클래스이다.
기존에는 Dto 또는 Entity를 아래와 같이 설정했다.
- 익숙할 수도 있겠지만, 길다는 생각이 들지 않나? 라고 할뻔 ㅋ😶
public class SampleRecord {
private final String name;
private final Integer age;
private final Address address;
public SampleRecord(String name, Integer age, Address address) {
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public Address getAddress() {
return address;
}
}
- record 클래스로 작성하면 아래와 같이 간소화할 수 있다.
- 필드마다 설정도 추가적으로 할 수 있다.
public record SampleRecord(String name,Integer age,Address address) {
public SampleRecord {
if(age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
}
}
record 클래스의 특징은 아래와 같다
- record는 final 클래스이므로 상속할 수 없다.
- 각 필드가 private final로 정의된다.
- 모든 필드를 초기화하는 RequiredAllArgument 생성자가 생성된다.
- 각 필드의 getter는 필드 이름이다.
SampleRecord sampleRecord = new SampleRecord();
System.out.println("get Name " + sampleRecord.name());
728x90
'Programming Language > Java' 카테고리의 다른 글
[이펙티브 자바]Item.04-인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2024.04.05 |
---|---|
[이펙티브 자바]Item.03-private 생성자나 열거 타입으로 싱글턴임을 보증하라 (0) | 2024.04.02 |
[이펙티브 자바]Item.02-생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2024.03.22 |
[이펙티브 자바]Item.01-생성자 대신 정적 펙터리 메서드를 고려하라 (0) | 2024.03.15 |
[Java] Build Pattern (0) | 2022.11.13 |