홈 › 고급 › 06 / 10

메서드 활용 패턴 (고급)

섹션 6진행 0 / 10

6. 정리

  • 메서드 참조 4종: static(Integer::parseInt), 특정 객체(obj::method), 임의 객체(String::length, 첫 인자가 this), 생성자(ArrayList::new). 인자를 그대로 넘기는 람다는 모두 참조로 줄인다.
  • 고차 함수: 함수를 받으면 전략 주입·콜백·파이프라인, 함수를 돌려주면 팩토리·커링·부분 적용, 받고 돌려주면 데코레이터(재시도, 캐시, 시간 측정). 돌려주는 람다는 매개변수를 캡처한다(effectively final).
  • 합성: Function.andThen(왼→오), compose(오→왼), Predicate.and/or/negate, Comparator.thenComparing/reversed, 도메인 인터페이스에는 default 조합 메서드(then, orCheaper)를 직접 만든다.
  • 제네릭 메서드는 <T>를 반환 타입 앞에 선언하고 인자·대입 대상에서 추론한다. 추론 근거가 없으면 클래스.<T>메서드()로 명시.
  • 지연 실행은 값 대신 Supplier. 메모이제이션은 computeIfAbsent(단, 재귀 안에서는 get/put 분리). 선형 재귀는 LongStream.reduce, 수열은 Stream.iterate/generate.
  • CompletableFuture: thenApply(동기 변환), thenCompose(의존하는 비동기), thenCombine(독립 작업 합치기). 독립 작업은 먼저 둘 다 시작한 뒤 합친다.

배치 06 레슨에서는 이 데코레이터·헬퍼 기법을 실무 배치에 적용합니다. withReader/withWriter로 리소스를 안전하게 감싸고, forEachChunk로 청크 반복을, timed로 진행률·시간 측정을, retry/skip으로 실패 처리를 함수로 묶어 재사용 가능한 BatchUtils를 만듭니다.