https://sundaland.tistory.com/64
인코딩이라는 개념을 사용하는 이유는 다이나믹 프록시에서 메서드 호출이 단순히 다른 객체로 전달되는 것이 아니라, 호출된 메서드와 아규먼트들이 일종의 데이터로 변환 (또는 인코딩)되어 전달되기 때문이다. 이 과정을 통해 메서드 호출에 대한 상세한 정보가 포함된 java.lang.reflect.Method 객체와 아규먼트들이 Object[ ] 배열로 표현되어, Invocation Handler에 전달될 수 있게 된다.
- 메스드 호출의 구조화 : 메서드의 이름, 파라미터 타입, 리턴 타입, 아규먼트 등의 정보는 단순한 값이 아니라, 복잡한 구조로 이루어진 데이터이다. 이 정보를 java.lang.reflect.Method 객체와 Object[ ] 배열로 변환하는 과정은 마치 데이터를 인코딩하는 과정과 유사하다. 이를 통해 메서드 호출의 모든 관련 정보가 구조화된 형식을 저장된다.
- 리플렉션 사용 : 리플렉션을 통해 메서드 정보를 동적으로 처리할 때, 호출된 메서드를 식별하고 해당 메서드를 처리하는 방식은 일종의 인코딩된 데이터를 해석하여 실행하는 것과 비슷하다. 리플렉션은 프로그램 실행 중에 타입에 대한 정보를 동적으로 다루는 방법이므로, 메서드 호출은 마치 데이터처럼 다루어질 수 있다.
- Invocation Handler에서의 해석 : Invocation Handler는 전달받은 Method 객체와 아규먼트를 해석하여 적절한 동작을 수행한다. 이 과정은 인코딩된 데이터를 해석하고 처리하는 과정과 유사하게 이해될 수 있다.
인코딩이라는 용어는 메서드 호출이 단순한 호출 이상의 복잡한 데이터 구조로 변환되어 처리된다는 점을 강조하기 위한 표현이다. 이를 통해 메서드 호출의 모든 정보가 핸들러로 전달되고, 핸들러는 이 정보를 기반으로 적절한 로직을 수행할 수 있다.
'Reflection' 카테고리의 다른 글
sealed interface (0) | 2024.08.20 |
---|---|
type-safe proxy object (0) | 2024.08.20 |
Members - Constructors (0) | 2024.08.20 |
Members - Methods (0) | 2024.08.19 |
Members - Fields (0) | 2024.08.16 |