BCEL では、オペランド スタックにプリミティブ型をプッシュできます。しかし、BCELのスタックにカスタム タイプ オブジェクトをプッシュできるかどうか知りたいですか?
問題のコンテキストを説明できるように、いくつかのコードを提供しています
class Automobile {
public void getEngine(int carNo,EngineClass engineClassObj){
System.out.println("EngineNo="+engineClassObj.sisNo);
}
}
Now when i load "Automobile" class in memory.
ilist = new InstructionList();
ilist.append(InstructionConstants.ALOAD_0);
ilist.append(new PUSH(pgen,345));
////Hear Now i have to also push the Object on Stack
ilist.append(ifact.createInvoke(_invoking_ClassName,_invoking_MethodName, Type.INT,*
new Type[] { Type.INT,Type.OBJECT }, Constants.INVOKEVIRTUAL));
ilist.append(InstructionConstants.IRETURN);
1-createNew() メソッドを使用して新しいオブジェクトを生成する場合、そのフィールド値をどのように埋めるのですか? 2-または、最初にPUSHを使用してエンジンタイプObjのすべてのフィールド値をスタックにプッシュする場合、メモリ上にオブジェクトを構築してスタックにプッシュする方法があります。これらは私が考えることができるいくつかの解決策です。
しかし、私は正しい解決策を知らないので、まだ助けが必要です...