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
- dynamic programming
- scala
- programmers
- 리눅스
- 스칼라
- 알고리즘
- 튜토리얼
- Go언어
- 주키퍼
- Python
- golang
- Java
- docker
- gradle
- Linux
- 동적프로그래밍
- 문제풀이
- DP
- redis
- zookeeper
- 파이썬
- 자바
- 코드워
- 프로그래머스
- leetcode
- boj
- codewars
- go
- HBase
- 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