Notice
Recent Posts
Recent Comments
Link
관리 메뉴

look-forest

인터페이스의 변화 본문

Java/모던 자바(Java 8+)

인터페이스의 변화

studyHub 2024. 11. 8. 12:45

인터페이스 기본 메소드와 스태틱 메소드

기본 메소드 (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