Guards

Guards (가드 생성 유틸리티)

MethodHandles.guardWithTest(...)용 전형적인 가드를 만들고 그 메서드 타입을 조정하기 위한 유틸리티 메서드 모음입니다.

출처: Java API Reference

본문

동적 링크에서 가드는 인자들이 어떤 조건을 만족하는지 검사해 호출 핸들 적용 여부를 결정합니다. 이 클래스는 클래스 검사, 인스턴스 검사, null 검사, 동일성 검사 같은 흔한 가드를 쉽게 만들어 주는 정적 팩토리 메서드들을 제공해요.

주요 메서드

  • isOfClass(Class<?> clazz, MethodType type) — 지정한 타입의 인자를 가지되 boolean 반환 값인 가드 메서드 핸들을 만듭니다. 특정 클래스 타입인지 검사해요.
  • getClassGuard(Class<?> clazz) — 유일한 인자가 특정 클래스와 정확히 일치하는지 검사하는 가드를 만듭니다.
  • getInstanceOfGuard(Class<?> clazz) — 유일한 인자가 특정 클래스의 인스턴스인지 검사하는 가드를 만듭니다.
  • getIdentityGuard(Object obj) — 유일한 인자가 다른 객체와 참조적으로 동일한지 검사하는 가드를 만듭니다.
  • isInstance(Class<?>, int pos, MethodType) / isInstance(Class<?>, MethodType) — 지정한 위치의 인자가 특정 클래스의 인스턴스인지 boolean으로 반환하는 메서드 핸들을 만듭니다.
  • isNull() / isNotNull() — 첫 인자가 null인지 / null이 아닌지 검사하는 가드를 반환합니다.
  • isArray(int pos, MethodType) — 지정한 위치의 인자가 자바 배열인지 true를 반환하는 메서드 핸들을 만듭니다.
  • asType(MethodHandle test, MethodType type) / asType(LinkerServices, MethodHandle, MethodType) — 가드로 쓰일 메서드 핸들을 요청한 타입에 맞춰 적응시키되 boolean을 반환하도록 바꿉니다.

더 알아보기

Java 공식 API