是否可以用javassist代理或替换静态方法

是否可以用javassist代理或替换静态方法,java,javassist,Java,Javassist,我试过各种方法,但都没能成功。我也无法找到一个明确的答案 如果这是可能的,请举一个简单的例子是的,您当然可以替换任何静态方法的主体。这是最常见的用例之一: ClassPool cp = new ClassPool(true); CtClass ctClass = cp.get("com.acme.Foo"); CtMethod ctMethod = ctClass.getDeclaredMethod("bar"); ctMethod.setBody("{ }"); ctClass.toClass

我试过各种方法,但都没能成功。我也无法找到一个明确的答案


如果这是可能的,请举一个简单的例子

是的,您当然可以替换任何静态方法的主体。这是最常见的用例之一:

ClassPool cp = new ClassPool(true);
CtClass ctClass = cp.get("com.acme.Foo");
CtMethod ctMethod = ctClass.getDeclaredMethod("bar");
ctMethod.setBody("{ }");
ctClass.toClass();
您不能使用类似于Java代理调用处理程序的代理实用程序来执行此操作。后一个实用程序依赖于不允许处理静态方法的虚拟重写