인터페이스의 정적 메서드
별도의 유틸리티 클래스 대신 인터페이스에 직접 정적 유틸리티 메서드를 추가합니다.
코드 비교
✕ Java 7
// Separate utility class needed
public class ValidatorUtils {
public static boolean isBlank(
String s) {
return s == null ||
s.trim().isEmpty();
}
}
// Usage
if (ValidatorUtils.isBlank(input)) { ... }
✓ Java 8+
public interface Validator {
boolean validate(String s);
static boolean isBlank(String s) {
return s == null ||
s.trim().isEmpty();
}
}
// Usage
if (Validator.isBlank(input)) { ... }
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
더 나은 구성
관련 유틸리티를 별도의 클래스가 아닌 인터페이스와 함께 유지합니다.
발견 용이성
팩토리와 헬퍼 메서드가 예상한 곳에서 발견됩니다.
API 응집성
별도의 *Utils 또는 *Helper 클래스가 필요 없습니다.
이전 방식
유틸리티 클래스
모던 방식
인터페이스 정적 메서드
JDK 버전
8
난이도
초급
JDK 지원
인터페이스의 정적 메서드
사용 가능
JDK 8 (2014년 3월) 이후 사용 가능
동작 원리
Java 8 이전에는 인터페이스와 관련된 유틸리티 메서드가 별도의 클래스에 있어야 했습니다(예: Collection을 위한 Collections). 인터페이스의 정적 메서드는 관련 유틸리티를 함께 유지할 수 있게 합니다. Comparator.comparing() 같은 모던 API에서 흔히 볼 수 있습니다.
관련 문서