Guards
Guards (가드 생성 유틸리티)
MethodHandles.guardWithTest(...)용 전형적인 가드를 만들고 그 메서드 타입을 조정하기 위한 유틸리티 메서드 모음입니다.
본문
동적 링크에서 가드는 인자들이 어떤 조건을 만족하는지 검사해 호출 핸들 적용 여부를 결정합니다. 이 클래스는 클래스 검사, 인스턴스 검사, 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을 반환하도록 바꿉니다.