2012-09-24 2 views
4

I BCEL 패스 "이"매개 변수

public class SecondClass{ 
     MainClass main; 
     public SecondClass(MainClass main){ 
       this.main=main; 
     } 
     .... 
} 

그리고 MainClass에서 (의 .class 파일)

public class MainClass(){ 
     public void aMethod(){ 
       //I want to insert 
       //SecondClass sc = new SecondClass(this); 
     } 
} 

aMethod가 어떻게 아파치 BCEL 사용하여이 작업을 수행 할 수있는 한? 너무 감사합니다!

답변

0

'this'는 스택의 첫 번째 항목으로 전달됩니다. 따라서 로컬 변수에 저장할 수있는 방법은 jvm 명령 ALOAD 및 ASTORE를 사용하는 것입니다.

예를 들어 다음 코드는 해당 jvm 명령어를 생성합니다.

public void test() 
{ 
    Test var1 = this; 
    Test var2 = this; 
} 

    ALOAD 0  
    ASTORE 1  
    ALOAD 0 
    ASTORE 2   
    RETURN   
+0

현재 내가 시도 할 수 없습니다. 그러나 당신의 대답에 감사드립니다! –