是的,您当然可以替换任何静态方法的主体。这是最常见的用例之一:
ClassPool cp = new ClassPool(true);
CtClass ctClass = cp.get("com.acme.Foo");
CtMethod ctMethod = ctClass.getDeclaredMethod("bar");
ctMethod.setBody("{ }");
ctClass.toClass();
Run Code Online (Sandbox Code Playgroud)
您不能做的是使用类似于 Java 代理调用处理程序的代理实用程序来执行此操作。后一个实用程序依赖于不允许处理静态方法的虚拟覆盖。