반응형
try {
User user = new User();
Method method = User.class.getDeclaredMethod("setName", String.class);
method.setAccessible(true);
method.invoke(user, "Some name");
System.out.println("user.getName() = " + user.getName());
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
위 코드의 핵심은 method.setAccessible(true); 입니다. setAccessible()은 필드나 메서드의 접근제어 지시자에 의한 제어를 변경합니다.
일반적으로 private 인스턴스 면수나 메서드는 해당클래스의 외부에서는 접근할 수 없습니다. 이때 setAccessible(true);를 사용하면 문제없이 접근할 수 있게 됩니다.
단, 이 방법은 reflect를 통한 필드나 메서드 접근에 한하며 접근연산자(.)를 통한 방식은 불가능합니다.
728x90
반응형
'웹 개발' 카테고리의 다른 글
div(레이어) 밑의 객체를 클릭 가능하게 하는 방법 (0) | 2021.12.18 |
---|---|
java logging framework(log4j, log4j2, slf4j) (0) | 2021.12.14 |
Spring Boot 시작 시, 코드 실행 (0) | 2021.12.11 |
Springboot에서 HTTP encoding charset 설정하는 방법 (0) | 2021.12.10 |
Java에서 HashMap 복사하는 방법 (0) | 2021.12.10 |