BCEL传递“this”参数

时间:2012-09-24 03:24:45

标签: java bcel

我有

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

在MainClass(.class文件)中有aMethod

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

如何使用Apache BCEL执行此操作?非常感谢!

1 个答案:

答案 0 :(得分:0)

'this'作为堆栈中的第一项传递。因此,将它存储到局部变量的方式是使用jvm指令ALOAD和ASTORE。

例如,以下代码生成相应的jvm指令。

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

   ALOAD 0      
   ASTORE 1     
   ALOAD  0  
   ASTORE 2           
   RETURN