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
- mybatis
- 서블릿 컨테이너
- AWS
- 쿠버네티스
- Spring Data JPA
- DLQ
- 지연 로딩
- docker
- kafka
- Spring
- @ComponentScan
- @Transactional
- JdbcTemplate
- 스프링 부트
- 페이징
- JPA
- CORS
- MSA
- docker compose
- Routing Key
- securitycontextholderfilter
- DI
- JPQL
- JWT
- Spring Container
- redis
- Dead Letter Queue
- Web
- dockerhub
- 컨테이너
Archives
- Today
- Total
look-forest
인터페이스의 변화 본문
인터페이스 기본 메소드와 스태틱 메소드
기본 메소드 (Default Methods)
인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법
- 해당 인터페이스를 구현한 클래스를 깨트리지 않고 새 기능을 추가할 수 있다.
- 기본 메소드는 구현체가 모르게 추가된 기능으로 그만큼 리스크가 있다.
- Object가 제공하는 기능 (equals, hasCode)는 기본 메소드로 제공할 수 없다.
- 본인이 수정할 수 있는 인터페이스에만 기본 메소드를 제공할 수 있다.
- 인터페이스를 상속받는 인터페이스에서 다시 추상 메소드로 변경할 수 있다.
- 인터페이스 구현체가 재정의 할 수도 있다.
-> javav8 이전에는 인터페이스의 기본 구현체를 만들기 위해 abstract 클래스를 정의해서 하위 클래스들이 상속받아 썼다.
default method 덕분에, 하위 클래스가 인터페이스를 바로 구현해서 사용할 수 있게 되었다!
스태틱 메소드 (Static Methods)
해당 타입 관련 헬퍼 또는 유틸리티 메소드를 제공할 때 인터페이스에 스태틱 메소드를 제공할 수 있다.
자바 8 API의 기본 메소드와 스태틱 메소드
자바 8에서 추가한 기본 메소드로 인한 API 변화
인터페이스들에 default, static 메소드가 추가되어 사용하기 편해졌다.
아래 사용하던 것들이.. 다 인터페이스의 기본 메소드였다..!
Iterable의 기본 메소드
- forEach()
- spliterator()
names.forEach(System.out::println);
Spliterator<String> spliterator1 = names.spliterator();
Spliterator<String> spliterator2 = spliterator1.trySplit();
while (spliterator1.tryAdvance(System.out::println)) ;
System.out.println("=============================================");
while (spliterator2.tryAdvance(System.out::println)) ;
Collection의 기본 메소드
- stream() / parallelStream()
- removeIf(Predicate)
- spliterator()
names.removeIf(s -> s.startsWith("J"));
Comparator의 기본 메소드 및 스태틱 메소드
- reversed()
- thenComparing()
- static reverseOrder() / naturalOrder()
- static nullsFirst() / nullsLast()
- static comparing()
Comparator<String> compareToIgnoreCase = String::compareToIgnoreCase;
names.sort(compareToIgnoreCase.reversed());
names.sort(Comparator.reverseOrder());
참고 자료 & 이미지 출처
더 자바: java8 (백기선 님)
'Java > 모던 자바(Java 8+)' 카테고리의 다른 글
| CompletableFuture (0) | 2024.11.09 |
|---|---|
| Date와 Time (0) | 2024.11.09 |
| Optional (0) | 2024.11.09 |
| Stream (0) | 2024.11.09 |
| 함수형 인터페이스와 람다 (2) | 2024.11.07 |