我需要更改第三方库中的静态方法。我已经完成了转换实例方法但不确定同样的事情适用于静态方法。
我在MyClass.java中有几个名为myMethod的静态方法。我需要在运行时更改myMethod的实现。 基本上我扩展了ClassFileTransformer并覆盖了像下面这样的byte []变换方法。这适用于例如方法,但我不确定我是否可以对静态方法做同样的事情。
@Override
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
ProtectionDomain protectionDomain, byte[] classfileBuffer)
throws IllegalClassFormatException {
}
答案 0 :(得分:0)
是的,当然这是可能的。您可以更改整个类文件。对于大多数VM,您只能更改方法的实现,而不能更改其签名。如果方法是静态的,则无关紧要。