Dev Books/Effective Java24 [item 44] 표준 함수형 인터페이스를 사용하라 1. 불필요한 함수형 인터페이스를 만들지 말고 표준 함수형 인터페이스를 사용하라.Java 8부터는 java.util.function 패키지에 다양한 표준 함수형 인터페이스가 제공된다. 굳이 새로 함수형 인터페이스를 만들지 말고, 이미 제공되는 인터페이스 (예: Predicate, Function, Consumer)를 쓰는 것이 유지보수성과 가독성 면에서 좋다. 새로운 인터페이스를 만들더라도 정말 기존 것에 맞지 않거나 의미가 분명히 다를 때만 만들어야 한다.예시 1: LinkedHashMap.removeEldestEntryLinkedHashMap은 removeEldestEntry(Map.Entry eldest) 메서드를 재정의하면 캐시로 사용할 수 있다. // 최대 100개 항목까지만 유지되는 캐.. 2025. 7. 1. [item 43] 람다보다는 메서드 참조를 사용하라 메서드 참조람다가 익명 클래스보다 나은 점 중에서 가장 큰 특징은 간결함이다. 그런데 자바에는 함수 객체를 메서드 참조로 더 간결하게 만들 수 있다.예시list.forEach(System.out::println); // 람다 대신 메서드 참조자바 8 Map.merge() 메서드자바 8 때 Map에 추가된 merge 메서드로 살펴보자. Map.merge(K key, V value, BiFunction remappingFunction)key가 없으면 value를 삽입하고, key가 이미 있으면 remappingFunction으로 기존 값과 새 값을 병합한다.람다 사용wordCounts.merge(word, 1, (oldVal, newVal) -> oldVal + newVal);연산 로직을 코드 안에 명시한.. 2025. 6. 30. [item 42] 익명 클래스보다는 람다를 사용하라. 1. 익명의 클래스와 람다익명 클래스이름 없는 클래스로, 인터페이스나 추상 클래스를 바로 구현하거나 상속해서 객체를 생성한다. 프로그램 내에서 한 번만 객체로 만드는 데 사용되는 클래스의 경우, 클래스를 정의하고 생성하는 것이 비효율적이기 때문이다. 익명 함수로 클래스 정의와 구현을 동시에 하여 코드 길이를 줄일 수 있다. Runnanle이나 Event Listener 객체를 생성하는데 주로 사용된다. 익명 클래스를 Runnable로 사용하는 예public class AnonymousClassExample { public static void main(String[] args) { // Runnable 인터페이스를 익명 클래스로 구현 Runnable task = n.. 2025. 6. 30. [item 41] 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라 1. 마커 인터페이스아무 메서드도 담고 있지 않고, 단지 자신을 구현하는 클래스가 특정 속성을 가짐을 표시해주는 인터페이스를 마커 인터페이스(marker interface)라 한다.Serializable 인터페이스가 좋은 예다.대표 예: java.io.Serializablepublic interface Serializable { // 아무 메서드도 없음!}Serializable을 구현한 클래스는 직렬화(Serialization)가 가능하다는 표시이다. 자바의 ObjectOutputStream은 이 인터페이스가 있는 객체만 직렬화하려고 시도한다.class User implements Serializable { private String name; private int age;}2. 마커.. 2025. 6. 26. 이전 1 2 3 4 ··· 6 다음