MethodHandleTransformer

MethodHandleTransformer (메서드 핸들 변환기)

메서드 핸들을 변환하는 연산을 기술하는 일반 인터페이스입니다. 전형적인 용도는 내부 객체 필터(internal objects filter)를 구현하는 것이에요. 함수형 인터페이스라 람다나 메서드 참조로 사용할 수 있으며, 대표 구현체로 DefaultInternalObjectFilter가 있습니다.

출처: Java API Reference

본문

메서드 핸들을 받아 변환된 메서드 핸들을 반환합니다. DynamicLinkerFactory.setInternalObjectsFilter(...)에서 이 변환기를 설정하면, 링커 서비스가 만들어 내는 메서드 핸들에 자동으로 변환이 적용돼요.

이런 메커니즘의 대표적인 활용처는 런타임 내부 객체가 외부로 유출되지 않게 막는 것입니다. 메서드 핸들의 매개변수나 반환 값 중 내부 객체가 오가는 위치에 필터를 끼워 넣어, 경계를 넘는 순간 객체를 감싸거나 되돌리는 처리를 할 수 있어요.

간단히 말해 변환기는 타깃 메서드 핸들을 받아, 같은 시그니처를 유지하면서도 동작이 보강된 새 핸들을 돌려줍니다. 덕분에 기존 링크 로직을 바꾸지 않고 필터링 같은 횡단 관심사를 적용할 수 있어요. 람다로 아주 간단히 만들 수 있어서, 특별한 클래스 없이도 변환 규칙을 표현하기 좋아요.

메서드

  • transform(MethodHandle target) — 메서드 핸들을 변환합니다. 변환 대상 target을 받아 변환된 메서드 핸들을 반환해요.

더 알아보기

Java 공식 API