Java 클래스 A의 .class 파일이 주어지면 주어진 바이트 코드 시퀀스를 추출하는 방법 (예 : BCEL, ASM 등)이 있습니다 (기본 블록이라고 가정) , 별도의 위치에 배치하고 나중에 해당 바이트 코드 시퀀스를 실행합니까?임의의 순서의 Java 바이트 코드 추출 및 실행
예 : 소스 코드에 ... a + = b; b + = 21; . .
바이트 코드 표현에만 액세스 할 수 있습니다. 그 바이트 코드를 추출하여 블랙 박스로 취급하고 싶습니다. 클래스 A의 지시에서 소스 라인 'a + = b;'대신 적절한 누락 바이트 코드 시퀀스를 보유하는이 외부 블랙 박스 X를 가리 키기를 원합니다. 나는 블랙 박스에 필요한 모든 변수를 스택 프레임에 제공하고 싶다. (예를 들어, a, b, 아마도 블랙 박스 X에서 사용되는 메소드 매개 변수의 현재 값 ...) 그리고 바이트 코드 시퀀스 실행 후, 블랙 박스는 새로 업데이트 된 프레임 변수와 함께 원래 클래스 A로 제어를 되돌립니다.
어떤 아이디어 주셔서 감사합니다.
편집 :
아래의 제안으로, 블랙 박스가 가장 합리적 스텁 클래스 파일의 내부 스텁 방법이 될 것입니다. 그런 다음 질문은 다음과 같이됩니다.이 명령 시퀀스에서이 잘 구성된 스텁 클래스 및 메서드를 가장 합리적으로 어떻게 만들고 원래 클래스 A에서 컨트롤을 전송하는 방법이 이상적으로 컴파일시 '오프라인으로'수행됩니다. 시각.
위대한 기사. ASM이 훌륭한 도구 인 이유는 훌륭한 문서 때문입니다. – ChaimKut