Javassist:替换函数中的语句

时间:2015-11-20 12:30:34

标签: java javassist

使用javassist,我可以使用setBody()更改整个方法内容。

有没有办法让replace只是方法中的一个语句。

请找到以下代码:

ctClass.instrument(new ExprEditor() {
        @Override
        public void edit(FieldAccess fieldAccess)
                throws CannotCompileException {
            //System.out.println(fieldAccess.getFieldName());
        if (fieldAccess.getFieldName().equals("out")) {             

            fieldAccess.replace(" { System.out.println(\"Manipulating.. \"); $_ = $proceed($$); } ");                
            }
        }           
    }

我的目的是动态地“替换”主java程序中的System.out.println(" ");

当我尝试这样做时(上面的方法),我看到这种方法只是在方法的开头添加一行,就在它应该替换的System.out.println之前。我的代码中仍存在先前的System.out.println语句。

我在这里做错了吗?如果我能得到一些指示,那就太棒了。

0 个答案:

没有答案