如何使用Javassist将静态方法调用替换为实例方法调用?
我想使用Javassist将类似于如何使用Javassist将静态方法调用替换为实例方法调用?,java,javassist,Java,Javassist,我想使用Javassist将类似于SomeClass.get(foo,“bar”)的内容转换为foo.bar() 我查看了ExprEditor,并尝试了以下方法: private static class StaticToInstanceAccessorConverter extends ExprEditor { @Override void edit(MethodCall methodCall) throws CannotCompileException { i
SomeClass.get(foo,“bar”)
的内容转换为foo.bar()
我查看了ExprEditor
,并尝试了以下方法:
private static class StaticToInstanceAccessorConverter extends ExprEditor {
@Override
void edit(MethodCall methodCall) throws CannotCompileException {
if (methodCall.className.equals('my.package.Somaclass') && Modifier.isStatic(methodCall.method.getModifiers())) {
if (methodCall.methodName.equals('get')) {
methodCall.replace('{ $_ = $1.$2(); }')
}
}
}
}
```
但这似乎不起作用?欢迎任何提示 您应该清楚一点,您正在使用javassist库。这可能是因为
“bar”
是一个字符串吗?是的,我考虑过,但我没有找到修改它的方法