직접 함수를 호출하지않고 클래스와 메서드의 메타정보를 이용해서 함수를 호출할 수 있다.
메서드 2개를 직접호출하지않고 Method.invoke() 하나만으로 각자 다른 메서드를 호출할때 넣어주기만 하면 생성할수있다
하지만 동적으로 계산하기 때문에 컴파일오류를 잡지못하고 런타임오류만 뜨기 때문에 잘 사용되지 않는다
예를들어 a라는 메소드가 있는데 실수로 Method.invoke("aa")를 해버리면 런타임에러가 발생한다.
메타정보는 컴파일시점에 결정되어있지만 조회하고 활용하는 행위는 런타임때 이루어짐
컴파일러(javac)는 메타정보를 바이트코드에 이미기록함
JVM 클래스 로딩때 클래스로더가 .class를 읽고 메타스페이스에 클래스 메타정보 적재
예외적으로 JDK동적프록시 CGLIB ByteBuddy는 런타임때 새로운 클래스가 생성된다.
'Java > JVM' 카테고리의 다른 글
| 자바 메모리 모델 (JMM) (0) | 2026.02.02 |
|---|---|
| 메모리 가시성 (1) | 2026.02.02 |
| 스레드 로컬 (0) | 2026.01.23 |
| 자바의 컴파일, 클래스 로딩, 실행 구조 정리 (0) | 2026.01.03 |
| 데몬 스레드 (0) | 2025.08.17 |