使用javassist读取方法的返回值

时间:2015-04-20 18:40:00

标签: javassist

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

示例:

public String sayHello(){
    return "1";
}

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

method.insertAfter("someClass.someMethod(<how to add that value here>);");

有谁能让我知道怎么做?

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

1 个答案:

答案 0 :(得分:3)

这对我有用:

AssetFileDescriptor assetFileDescriptor = assetManager.openFd(fileName);  
FileDescriptor fileDescriptor = assetFileDescriptor.getFileDescriptor();  
FileInputStream stream = new FileInputStream(fileDescriptor);

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

    method.insertAfter( "System.err.println( $_ );");

其中someMethod获取一个Object。