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
- 해외주식 양도세 신고
- 최대공약수 예제
- katalon 자동화
- 재귀함수 예제
- js 자동완성
- katalon
- 피보나치 예제
- oracle group by
- 테스트 자동화
- Katalon Recorder 사용법
- 해외증권 양도세 한국투자증권
- recursion example
- 톰캣 실시간 로그
- tomcat log
- 피보나치함수
- 재귀 예제
- 피보나치함수 예제
- katalon xpath
- 한국투자증권 해외주식 양도세
- 국세청 해외주식 양도세 신고방식
- 홈택스 해외주식 양도세
- katalon 사용법
- CSTS 폭포수 모델
- katalon 비교
- bfs 미로탐색 java
- 주식 양도세 신고방법
- 한국투자증권 양도세 신고
- javascript 자동완성
- git 연동
- java.sql.SQLSyntaxErrorException
Archives
- Today
- Total
엄지월드
item44. 표준 함수형 인터페이스를 사용하라. 본문
자바가 람다를 지원하면서 API를 작성하는 모범 사례도 크게 바뀌었다. 예컨대 상위 클래스의 기본 메서드를 재정의해 원하는 동작을 구현하는 템플릿 메서드 패턴의 매력이 크게 줄었다.
이를 대체하는 현대적인 해법은 같은 효과의 함수 객체를 받는 정적 팩터리나 생성자를 제공하는 것이다. 이 내용을 일반화해서 말하면 함수 객체를 매개변수로 받는 생성자와 메서드를 더 많이 만들어야 한다. 이때 함수형 매개변수 타입을 올바르게 선택해야 한다.
예컨대 removeEldestEntry를 다음처럼 재정의하면 맵에 원소가 100개가 될 때까지 커지다가, 그 이상이 되면 새로운 키가 더해질 때마다 가장 오래된 원소를 하나씩 제거한다. 즉, 가장 최근 원소 100개를 유지한다.
protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
return size() > 100;
}
잘 작동하지만 람다를 사용하면 훨씬 잘 해낼 수 있다. LinkedHashMap을 오늘날 다시 구현한다면 함수 객체를 받는 정적 팩터리나 생성자를 제공했을 것이다.
'java > Effective JAVA' 카테고리의 다른 글
item43. 람다보다는 메서드 참조를 사용하라. (0) | 2024.04.29 |
---|---|
item42. 익명 클래스보다는 람다를 사용하라. (0) | 2024.04.29 |
Comments