Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javassist将静态方法调用替换为实例方法调用?_Java_Javassist - Fatal编程技术网

如何使用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

我想使用Javassist将类似于
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”
是一个字符串吗?是的,我考虑过,但我没有找到修改它的方法