AccessibleObject — 리플렉션 객체의 기본 클래스
AccessibleObject — 리플렉션 객체의 기본 클래스
AccessibleObject 클래스는 Field, Method, Constructor 객체(합쳐서 리플렉션 객체라고 불러요)의 기본 클래스예요. 리플렉션 객체가 사용될 때 자바 언어 접근 제어(access control) 검사를 억제하도록 표시하는 기능을 제공해요. 이를 통해 자바 객체 직렬화 같은 충분한 권한을 가진 고급 애플리케이션이 평소에는 금지되는 방식으로 객체를 조작할 수 있어요. Field, Method, Constructor를 사용할 때 기본적으로 자바 언어 접근 제어가 (한 가지 변형과 함께) 적용돼요.
본문
@Deprecated(since="17") protected AccessibleObject() — 더 이상 사용되지 않는 생성자예요.
public static void setAccessible(AccessibleObject[] array, boolean flag) — 배열의 모든 객체에 대해 플래그를 설정해, 이 객체들로 자바 언어 접근 제어를 억제할지 여부를 지정해요. 실패하면 SecurityException을 던저요.
public void setAccessible(boolean flag) — 이 객체에 대해 접근 제어 억제 플래그를 설정해요. 플래그가 true이고 억제가 허용되지 않으면 InaccessibleObjectException을 던져요.
public final boolean trySetAccessible() — 이 리플렉션 객체의 접근 제어 검사를 억제해요. 성공하면 true, 실패하면 false를 반환해요. setAccessible과 달리 예외를 던지지 않아요.
@Deprecated(since="9") public boolean isAccessible() — 이 객체에 대한 자바 언어 접근 제어 검사가 무시되는지 여부를 반환해요. 더 이상 권장되지 않아요.
public final boolean canAccess(Object obj) — 이 객체의 (필드 읽기/쓰기, 메서드 호출, 생성자 호출 등) 접근이 호출자에게 허용되는지 여부를 반환해요.
아래 메서드들은 AnnotatedElement의 구현으로, 이 리플렉션 객체에 붙은 애너테이션을 조회해요.
getAnnotation(Class) — 지정된 유형의 애너테이션을 반환해요.
isAnnotationPresent(Class) — 지정된 유형의 애너테이션이 존재하면 true를 반환해요.
getAnnotationsByType(Class) — 지정된 유형의 반복 가능 애너테이션을 모두 반환해요.
getAnnotations() — 모든 애너테이션을 반환해요.
getDeclaredAnnotation(Class) — 직접 선언된 지정 유형 애너테이션을 반환해요.
getDeclaredAnnotationsByType(Class) — 직접 선언된 반복 가능 애너테이션을 반환해요.
getDeclaredAnnotations() — 직접 선언된 모든 애너테이션을 반환해요.