일단 recode는 자바 14부터 preview기능으로 나왔고 16버전부터 정식으로 들어왔기때문에, 사용하지 못하는 분들도 계실 수 있습니다.
일단 저는 이게 뭔지 궁금해서 한번 사용해보았고 생각보다 쉽고 괜찮은 기능이라 생각해서 적용하고 작성해봅니다.
recode가 뭔데?
불변(immutable) 데이터 객체를 위한 전용 클래스 문법.
예를들어서 이런 클래스가 있다고 가정해봅시다.
public class User {
private final String name;
private final int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public int getAge() { return age; }
@Override
public boolean equals(Object o) { ... }
@Override
public int hashCode() { ... }
@Override
public String toString() { ... }
}
해당 클래스의 목적은 name과 age라는 데이터를 묶어서 전달하는것.
위의 코드를 recode를 활용하면
public record User(String name, int age) {}
이렇게 가벼워진다.
그럼 그 아래의
- private final String name;
- private final int age;
- 생성자
- name(), age() getter
- equals()
- hashCode()
- toString()
를 모두 자동으로 만들어준다.
사용하는법은 똑같이
User user = new User<>("홍길동",20);
이렇게 작성해주면 된다.
그럼 내 코드에 적용해보자.
우선
package Challenge;
public record CalcRecord <T extends Number> (T num1, T num2, OperatorType operator, double result) {
}
이런 recode클래스를 만들어줬다. 이후 사용자가 계산기를 이용하면 값을 저장 할 수 있도록
private final ArrayList<CalcRecord<T>> calcRecords = new ArrayList<>();
이런 변수를 하나 선언 해줬는데 조금 복잡해보이지만 뜯어보면 간단하다.
우선 변수는 ArrayList 타입이다,
그안에 요소들이 CalcRecode 타입이고 제네릭을 사용해준다. 그뿐이다. 생각보다 간단하다.
다만,
CalcRecord<T> calcRecord = new CalcRecord<>(positiveNumber1,positiveNumber2 , operator , result);
calcRecords.add(calcRecord);
데이터에 추가해줄때 메서드안에서 이런 객체를 하나 만들고 거기서 생성한 데이터를 calcRecords 에 add해준다
이름에 s가 붙고 안붙고 차이가있는데 이름을 잘못 선언한거같다..
여튼 이렇게 저장을 해주고 불러오는부분은 forEach 를 사용해줬다.
원래 stream().forEach를 했는데 그냥 forEach를 써도된다고 인텔리제이가 알려줘서 사용해줬다.
public void getCalcRecords() {
this.calcRecords.forEach(record -> {
System.out.println("============================================================");
System.out.println("첫번 째 수 : " + record.num1());
System.out.println("연산자 : " + record.operator());
System.out.println("두번 째 수 : " + record.num2());
System.out.println("연산 결과 : " + record.result());
System.out.println("============================================================");
});
}
1 : 계산기 | 2 : 가장 오래된 기록 삭제 | 3 : 더 큰 숫자 찾기 | 4 : 삭제 취소 | 5 : 연산 기록 조회 | exit 입력시 종료
5
============================================================
첫번 째 수 : 100.0
연산자 : PLUS
두번 째 수 : 200.0
연산 결과 : 300.0
============================================================
원하시는 메뉴를 선택 해 주세요.
1 : 계산기 | 2 : 가장 오래된 기록 삭제 | 3 : 더 큰 숫자 찾기 | 4 : 삭제 취소 | 5 : 연산 기록 조회 | exit 입력시 종료
이렇게 저장된 결과를 잘 불러오는 것을 확인 할 수있다.

참고자료
[Java] Java14 레코드(Record)를 알아보자
Java 8 , 11 버전만 사용하다 보니 이후 버전에 추가된 것들에 대해서 학습을 하려고 합니다. Java 14에서 추가된 레코드(Record)에 대해서 레코드의 목적, 자동생성 항목 등 레코드의 기본 사항에 대해
colevelup.tistory.com
'TIL' 카테고리의 다른 글
| 예외 처리를 하는 이유 (0) | 2026.01.20 |
|---|---|
| 의존성 주입 해보기 (DI) (0) | 2026.01.15 |
| 삭제한데이터를 undo 하는 기능 만들기 (0) | 2026.01.14 |
| 이중콜론(::)(매서드 참조)표현식 (0) | 2026.01.14 |
| enum이란 무엇인가? (0) | 2026.01.13 |