DefaultInternalObjectFilter

DefaultInternalObjectFilter (기본 내부 객체 필터)

DynamicLinkerFactory.setInternalObjectsFilter(...)를 위한 기본 구현 클래스로, 한 쌍의 필터링 메서드 핸들에 위임하는 MethodHandleTransformer입니다. 런타임 내부 객체가 외부로 유출되지 않게 막아 주는 역할을 해요.

출처: Java API Reference

본문

매개변수 값을 필터링하는 Object(Object) 타입 메서드 핸들과, 반환 값을 필터링하는 같은 타입의 또 다른 메서드 핸들을 받습니다. transform(MethodHandle)에 전달된 메서드 핸들 중 Object 타입으로 선언된 매개변수와 반환 값에 이 필터들을 매개변수·반환 값 필터로 적용해요. 마지막 Object[] 매개변수를 가진 가변 인자 호출을 지원하는 메서드 핸들도 처리합니다.

매개변수 필터는 내부 런타임 객체를 공개 인터페이스를 가진 어댑터로 감싸 노출하는 래핑 메서드, 반환 값 필터는 그 역인 언랩핑 메서드로 넓게 생각할 수 있어요. 이렇게 함으로써 내부 객체가 언어 런타임 경계 밖으로 그대로 노출되는 것을 막을 수 있습니다.

transform이 적용되는 대상은 주로 Object 타입의 매개변수나 반환 값을 가진 메서드 핸들입니다. 그래서 이 필터는 언어 런타임의 중요한 내부 구현 객체가 링크 과정에서 외부 코드로 새어 나가는 것을 방지하는 보안·캡슐화 측면에서 의미가 있어요.

생성자

  • DefaultInternalObjectFilter(MethodHandle parameterFilter, MethodHandle returnFilter) — 새 필터를 만듭니다. 두 필터 모두 Object(Object) 타입이어야 하고, 없으면 null을 전달할 수 있어요. 둘 중 하나라도 예상 타입이 아니면 IllegalArgumentException이 발생합니다.

메서드

  • transform(MethodHandle target) — 메서드 핸들을 변환해, Object 타입으로 선언된 매개변수와 반환 값에 필터를 적용한 결과를 반환합니다.

더 알아보기

Java 공식 API