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임을 분명히 알 수 있다.