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
- 동적프로그래밍
- 프로그래머스
- Python
- golang
- 주키퍼
- HBase
- 자바
- Linux
- scala
- 튜토리얼
- 코드워
- 파이썬
- 알고리즘
- codewars
- 스칼라
- 문제풀이
- DP
- go
- leetcode
- gradle
- boj
- dynamic programming
- 리눅스
- docker
- redis
- zookeeper
- Java
- programmers
- Go언어
- OOM
Archives
- Today
- Total
파이문
JDK 14 톺아보기 본문
728x90
JDK14
자바 14 가 새로 나왔다(고 하기엔 좀 되었지만...).
엄청난 삽질로 인텔리제이에 자바 14가 돌아가도록 세팅 했다. (기회가 된다면 정리를 따로 하려고 한다.)
아무튼! 14 의 new feature 들을 하나씩 살펴보면서 정리하려고 한다.
Records
새로운 예약어이다!
평소 코딩을 하다 보면 객체 값이 변하지 않기를 원하는 경우가 있다.
public class OrgMessage {
private final int id;
private final String message;
public RequestDataOrg(int id, String message) {
this.id = id;
this.message = message;
}
public int getId() {
return id;
}
public String getMessage() {
return message;
}
}
이 처럼 클래스 변수들을 final
로 선언하고 setter
를 만들지 않는 경우가 대부분일 것이다. jdk14 부터는 records
라는 개념이 존재 하며 기본적으로 immutable
한 객 체를 만들고 싶을 때 사용한다. 즉 위의 코드를 records
로 변경하면 이렇게 바꿀 수 있다.
public record NewMessage(int id, String message) {}
여기엔 getter
도 setter
도 없다. 그러나 사용할 때는 get
을 쓸 수 있다. (정확히는 get
으로 시작하지는 않고 의미상 get
이다.)
ResponseData destMessage = new NewMessage(srcMessage.id() * 2);
records
에서 사전에 정의한 변수 값과 동일한 함수가 자동으로 생성(?) 된다. 그래서 호출은 위와 같이 그냥(??) 하면 된다. 그러나 immutable
을 지원하기 때문에 set
에 관련한 메서드는 없다.
'Java' 카테고리의 다른 글
멀티쓰레드에서 싱글톤 클래스 사용 예제 (0) | 2020.10.08 |
---|---|
Mockito 를 사용하는 예제 (0) | 2020.09.25 |
CountDownLatch vs CyclicBarrier (0) | 2020.09.24 |
멀티쓰레드 환경에서 캐시 구현하기 (0) | 2020.06.27 |
Comments