使用 javassist 读取方法的返回值

San*_*ram 4 javassist

我想读取一个方法的返回值,我必须将它传递给我使用 method.insertAfter 插入的代码。

例子:

public String sayHello(){
    return "1";
}
Run Code Online (Sandbox Code Playgroud)

我想使用 javassist 添加代码,比如 someClass.someMethod()。

method.insertAfter("someClass.someMethod(<how to add that value here>);");
Run Code Online (Sandbox Code Playgroud)

谁能让我知道如何做到这一点?

[编辑] 我无法编辑方法主体,因为可能存在其他代码。上面的方法只是一个例子。

Jam*_*mes 5

这对我有用:

    method.insertAfter( "System.err.println( $_ );");
Run Code Online (Sandbox Code Playgroud)

如果该方法返回 void,则 $_ 将为 null。所以,在你的情况下,我认为这会奏效:

    method.insertAfter( "someClass.someMethod( $_ );");
Run Code Online (Sandbox Code Playgroud)

其中 someMethod 接受一个对象。