Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- CAS
- javascript value
- javascript
- javascript 기초
- Redis
- Spring
- ECMA2015
- 자바
- webstorm
- JetBrains
- Spring Session
- javascript type
- 자바스크립트
- java.util.LinkedHashMap cannot be cast
- java
- you don't know js
- javascript 값
- Intellij
- webpack
- 이펙티브 자바
- Babel
- Effective Java
- 이펙티브자바
- spring batch #스프링 배치 #스프링 배치 중복 실행
- spring security
- requestbody
- effectivejava
- ES6
- javascript native
- nodeJS
Archives
- Today
- Total
귀찮지만 만들어보자
이펙티브 자바 - 람다와 스트림(1) 본문
익명 클래스보다 람다를 사용하라
- 자바8에 와서 추상 메서드 하나짜리 인터페이스는 인스턴스를 람다식을 이용해서 짧게 만들수 있게 됐다.
이를 이용하면 기존보다 간결하고 읽기 좋은 코드를 만들 수 있다.
- 익명 클래스를 사용한 코드
Collections.sort(words, new Comparator<String>() {
public int compare(String s1, String s2) {
return Integer.compare(s1.length(), s2.length());
}
});
- 람다식을 이용한 코드
Collections.sort(words, (s1, s2) -> Integer.compare(s1.length(), s2.length());
확실히 더 간결하고 읽기 좋은 코드를 만들 수 있다.
* 타입을 명시해야 코드가 더 명확할때만 제외하고는 람다의 모든 매개변수 타입은 생략하자
* 람다는 이름이 없고 문서화도 못한다. 코드로 일견에 동작이 보이지 않거나, 코드 라인이 길어지면 람다를 쓰지말아야한다
* 길어야 3줄 정도로 생각하자
* 람다 도입 이후 익명 클래스의 설 자리가 줄어들었지만 람다는 함수형 인터페이스에서만 사용이 가능하다
* 림다도 익명 클래스처럼 직렬화의 형태가 구현별로 다를 수 있기 때문에 람다를 직렬화하는 일은 극히 삼가야 한다
'이펙티브 자바' 카테고리의 다른 글
이펙티브 자바 - 람다와 스트림(6) (0) | 2019.01.19 |
---|---|
이펙티브 자바 - 람다와 스트림(5) (0) | 2019.01.19 |
이펙티브 자바 - 람다와 스트림(4) (0) | 2019.01.13 |
이펙티브 자바 - 람다와 스트림(3) (0) | 2019.01.13 |
이펙티브 자바 - 람다와 스트림(2) (0) | 2019.01.13 |