2011-12-07 6 views
0

SOF의 여러분 안녕하세요.Java 위임 호출 BCEL/ASM

내가 찾고있는 것 웹에서 검색하고 검색해 보았습니다. 클래스에 인터페이스를 삽입/삽입하고 (물론 컴파일되었지만) 인터페이스의 클래스에 필요한 메소드를 추가 할 수 있습니까? 나는 또한 할 수있는만큼 BCEL과 ASM을 배우려고 노력했지만 자원이 부족합니다 (친애하는 친구 Google과도). 그래서 여기에서 도움을 얻을 수 있기를 바랍니다! 나는 너에게 숟가락으로 나를 먹일 것을 기대하지 않고있다. 그러나 나는 어떤 지시가 필요하다! :) 나는 ASM 사이트에서 그 훌륭한 책을 알고 그들에 관한 모든 것에 대한 아주 많은 튜토리얼을 알고 있지만, 내가 전에 언급 한 것처럼 어떻게 인터페이스/메소드를 추가 할 수 있을지 모르겠다. 무엇을 시도 했습니까? 이 링크 here을 찾았지만 예상대로 작동하지 않았습니다. 정확히 무엇을하고 싶은지 알고 있지만 어떻게 할 수 있는지 모르겠습니다. heres example!

public class Cat { 
public int age; 
} 

public interface Animal { 
public int getAge(); 
} 

그 방법을 heres 구현 :

public int getAge(){ 
return age; 
} 

너무 사랑하는 SOF 회원, 방법이 워크 아웃 것?

답변

0

나는 BCEL에 대한 경험이 있었지만, 다시 정의 할 클래스를 감지하는 사용자 정의 클래스 로더로 시작하는 것이 좋습니다. 각 클래스에 대해 BCEL JavaClass 객체 (ClassLoaderRepository를 사용)를 가져온 다음 해당 클래스를 원하는대로 수정하십시오. 작업이 끝나면 JavaClass에서 클래스 파일을 가져 와서 ClassLoader # defineClass를 사용하여 정의를 위해 JVM에 전달합니다.

이제 실제 메소드를 구현하려면 코드를 포함하는 테스트 클래스를 작성한 다음 결과 클래스 파일에 BCELifier를 실행하여 해당 클래스 파일을 생성하는 데 필요한 Java BCEL 소스 코드를 인쇄하는 것이 좋습니다. 그것을 검사하고 원하는대로 복사하여 붙여 넣으십시오.

+0

도움을 주셔서 감사합니다. 지금 기회를주세요 : 3 – Ruuhkis