자바의 접근 제어자
Private | default | protect | public | |
같은클래스 | O | O | O | O |
같은패키지 | O | O | O | |
자손클래스 | O | O | ||
전체 | O |
자바의 접근 제어자에 따르면 현재
PrivateMethodCall 클래스에서 Hello 클래스의 main() 메서드를 실행 할 수 없어야 한다.
하지만 Private한메서드를 호출할 수 있는 방법이 있다.
그방법은 다음과 같다.
1. Class 객체의 forName(String str) 를 통해서 Class 객체를 생성해준다. // Class helloClass = Class.forName(~);
2. 생성된 객체를 통해서 Hello 객체를 생성해 준다. // Hello hello2 = (Hello)helloClass.newInstance()
3. 1에서 생성한 객체를 통해서 Hello에 있는 메서드에 접근 할 수 있다.
- 매개변수로 접근하려는 메서드명을 직접 입력할 수도 있고, 전체 메서드 목록을 배열로 받아올수 있다.
4. 3번의 리턴값으로 생성된 Method 객체를 통해서 해당 메서드의 접근 제어자를 변경시킬수 있다.
5. 그다음 접근성을 얻는 Method 객체를 통해서 .invoke(객체) 매서드를 통해서 해당 메서드를 실행시킬수 있다.
invoke()의 매개변수로 Object가 들어감
'dev > Spring' 카테고리의 다른 글
[Spring] RequestParam (0) | 2022.06.03 |
---|---|
[Spring] Servlet의 발전과정을 탐구해보자 - 탐구단계 (0) | 2022.05.22 |
[Spring] MVC 패턴 - 관심사의 분리 (0) | 2022.05.22 |
[Spring] HTTP/ TOMCAT 전반적인 내용 (0) | 2022.05.20 |
[Spring] HttpServletRequest, HttpServletResponse (0) | 2022.05.19 |