더북(TheBook)

Collections 클래스를 살펴보면 두 종류의 메서드를 찾을 수 있다. 먼저 다음과 같은 종류가 있다.


public static void shuffle(List<?> list)


 

이러한 메서드는 다음과 같은 List 인터페이스의 디폴트 메서드로 잘 동작할 것이다.


public default void shuffle()


 

이 경우 모든 리스트를 대상으로 list.shuffle()을 호출할 수 있다.

팩토리 메서드인 경우 메서드를 호출할 대상 객체가 없으므로 동작하지 않는다. 바로 이 부분이 정적 인터페이스 메서드가 등장할 곳이다. 예를 들어, 다음은 List 인터페이스의 정적 메서드가 될 수 있다.


public static <T> List<T> nCopies(int n, T o)

// o 인스턴스 n개로 구성된 리스트를 생성한다.


 

이 경우 Collections.nCopies(10, "Fred") 대신 List.nCopies(10, "Fred")를 호출할 수 있고, 코드를 읽는 사람은 결과가 List임을 분명히 알 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.