08
인터페이스의 정적 메서드
자바 8부터는 인터페이스에 정적 메서드를 추가할 수 있다. 인터페이스의 정적 메서드를 금지해야 하는 기술적인 이유는 없었다. 단지 추상 명세라는 인터페이스의 정신에 어긋나는 것으로 보였을 뿐이다.
지금까지는 일반적으로 인터페이스와 동반하는 클래스들에 정적 메서드를 두었다. 자바 표준 라이브러리에서 Collection/Collections 또는 Path/Paths같은 인터페이스와 유틸리티 클래스 쌍을 찾아볼 수 있다.
Paths 클래스를 살펴보자. 이 클래스는 몇 가지 팩토리 메서드factory method만 포함하고 있다. Paths.get("jdk1.8.0", "jre", "bin")처럼 일련의 문자열로부터 경로(Path)를 만들 수 있다. 자바 8에서는 Path 인터페이스에 이 메서드를 추가할 수도 있었다.
public interface Path {
public static Path get(String first, String... more) {
return FileSystems.getDefault().getPath(first, more);
}
...
}
이렇게 하면 Paths 클래스가 더는 필요 없다.