[아이템1] 자바 8부터는 인터페이스가 정적 메서드를 가질 수 없다는 제한이 풀렸기 때문에 인스턴스화 불가 동반 클래스를 둘 이유가 별로 없다.

2024. 7. 1. 16:55BOOKS/이펙티브 자바

 
이펙티브 자바
자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브러리의 최신 기능을 십분 활용하도록 내용 전반을 철저히 다시 썼다. 모던 자바가 여러 패러다임을 지원하기 시작하면서 자바 개발자들에게는 구체적인 모범 사례가 더욱 절실해졌고, 관련 조언을 이 책에 담아낸 것이다. 3판에는 자바 7, 8, 9에서 자바 언어와 라이브러리에 추가된 특성들을 녹여냈다. 특히 그동안 객체 지향에 치중하던 자바에 새로 도입된 함수형 프로그래밍 요소도 자세히 알아본다. 람다(lambda)와 스트림(stream)만을 다룬 장을 포함하여 새로운 아이템도 많이 추가되었다. 새롭게 다루는 주제들 - 함수형 인터페이스, 람다식, 메서드 참조, 스트림 - 인터페이스의 디폴트 메서드와 정적 메서드 - 제네릭 타입에서의 다이아몬드 연산자를 포함한 타입 추론 - @SafeVarargs 애너테이션 - try-with-resources 문 - Optional T 인터페이스, java.time, 컬렉션의 편의 팩터리 메서드 등의 새로운 라이브러리 기능
저자
조슈아 블로크
출판
인사이트
출판일
2018.11.01

자바 8 전의 인터페이스는 정적 메서드를 가질 수 없기 때문에 해당 인터페이스 타입으로 반환하는 정적 메서드가 필요하면 인스턴스화 불가인 동반 클래스를 만들어서 그 안에 정적 메스들 정의

Collections에서 List를 반환하는 정적 메서드

자바 8부터는 인터페이스에 정적 메서드를 정의할 수 있으므로 동반 클래스를 만들 필요가 없다.