250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 인프런백기선
- 기술면접
- 자바
- 이팩티브 자바
- DDD
- AWS
- AWS RDS
- 혼공SQL
- SQL쿡북
- react
- 도메인 주도 개발 시작하기
- 네트워크
- 클린코드
- 이펙티브자바
- 알고리즘
- 스프링부트와AWS로혼자구현하는웹서비스
- 이펙티브 자바
- 자바예외
- CleanCode
- mysql
- 자료구조
- 자바스터디
- 알고리즘분석
- java
- 인프런김영한
- vue.js
- MariaDB
- 인덱스
- jpa
- aop
Archives
- Today
- Total
기록이 힘이다.
과제) 자바의 Record를 공부하세요. 본문
728x90
<기존의 불변 데이터 객체>
class Point {
private final int x;
private final int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
int x() { return x; }
int y() { return y; }
public boolean equals(Object o) {
if (!(o instanceof Point)) return false;
Point other = (Point) o;
return other.x == x && other.y = y;
}
public int hashCode() {
return Objects.hash(x, y);
}
public String toString() {
return String.format("Point[x=%d, y=%d]", x, y);
}
}
레코드는 Java 언어의 새로운 종류의 클래스입니다. 레코드의 목적은 작은 변수 그룹이 새로운 종류의 엔터티로 간주된다는 것을 선언하는 것입니다. 레코드는 상태 (변수 그룹)를 선언하고 해당 상태와 일치하는 API에 커밋합니다. 즉, 레코드는 클래스가 일반적으로 누리는 자유(내부 표현에서 클래스의 API를 분리하는 기능)를 포기하지만 그 대가로 레코드가 훨씬 더 간결해집니다.
레코드 선언은 이름, 헤더 및 본문을 지정합니다. 헤더에는 상태를 구성하는 변수인 레코드의 구성 요소가 나열됩니다. (구성 요소 목록을 상태 설명 이라고도 합니다 .) 예를 들면 다음과 같습니다.
record Point(int x, int y) { }
레코드 선언에는 여러 가지 제한 사항이 있습니다.
- 레코드는 암묵적으로 final 클래스(상속불가)이고, abstract 선언 불가
- 다른 클래스를 상속(extends) 받을 수 없음, 인터페이스 구현(implements)은 가능
'JAVA' 카테고리의 다른 글
[이펙티브 자바]아이템44 표준 함수형 인터페이스를 사용하라 (0) | 2023.04.07 |
---|---|
[이펙티브 자바] 6장 열거타입과 애너테이션 (0) | 2023.03.29 |
[이펙티브 자바] 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 (0) | 2023.03.23 |
[이펙티브 자바] 15. 클래스와 멤버의 접근 권한을 최소화하라. (0) | 2023.03.21 |
[이펙티브 자바] 14. Comparable을 구현할지 고려하라 (2) | 2023.03.20 |