SecureLookupSupplier

SecureLookupSupplier (보안 검사된 룩업 제공자)

MethodHandles.Lookup 객체에 보안 검사된 접근을 제공하는 클래스입니다. CallSiteDescriptor의 슈퍼클래스로, 콜 사이트가 지닌 룩업에 안전하게 접근할 수 있게 해 줍니다.

출처: Java API Reference

본문

이 클래스는 보안 관리자가 설치되어 있는 환경에서 룩업 객체가 함부로 노출되지 않도록 보호합니다. getLookup()으로 룩업을 얻으려면 적절한 런타임 권한이 필요해요. 룩업은 특정 클래스의 비공개 멤버에 접근할 수 있는 강력한 객체이므로, 이를 보호하지 않고 내보내면 권한 검사를 우회할 위험이 생기기 때문입니다.

CallSiteDescriptor가 이 클래스를 상속하는 이유도 같은 맥락이에요. 콜 사이트 설명자는 자신이 지닌 룩업을 링커에게 알려줘야 하지만, 그 과정에서 룩업이 함부로 노출되지 않도록 보안 검사된 접근 경로를 제공하는 것이죠.

필드와 생성자

  • GET_LOOKUP_PERMISSION_NAMEgetLookup()을 성공적으로 호출하는 데 필요한 런타임 권한 이름입니다.
  • SecureLookupSupplier(MethodHandles.Lookup lookup) — 전달된 룩업을 보호하는 새 제공자를 만듭니다. null을 전달하면 NullPointerException이 발생해요.

메서드

  • getLookup() — 이 제공자가 보호하는 룩업을 반환합니다. 보호된 룩업이 MethodHandles.publicLookup()이 아니고 보안 관리자가 있으며 RuntimePermission("dynalink.getLookup") 검사가 실패하면 SecurityException이 발생해요.

  • getLookupPrivileged() — 보안 검사 없이 getLookup()의 값을 반환합니다. 하위 클래스가 룩업에 빠르게 접근하고 싶을 때 사용할 수 있어요.

더 알아보기

Java 공식 API