4

我有

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 做到这一点?非常感谢!

4

1 回答 1

0

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

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

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

   ALOAD 0      
   ASTORE 1     
   ALOAD  0  
   ASTORE 2           
   RETURN        
于 2013-07-23T09:20:37.810 回答