是否可以使用 Byte Buddy 重新定义类的私有方法?似乎使用 Byte Buddy 的切入点总是对现有类进行子类化。这样做的时候,显然不可能重新定义父类的私有方法(至少不能以在父类中使用重新定义的方法的方式)。
考虑以下示例:
public class Foo {
public void sayHello() {
System.out.println(getHello());
}
private String getHello() {
return "Hello World!";
}
}
Foo foo = new ByteBuddy()
.subclass(Foo.class)
.method(named("getHello")).intercept(FixedValue.value("Byte Buddy!"))
.make()
.load(Main.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded()
.newInstance();
foo.sayHello();
输出将是“Hello World!”。有没有机会获得“字节好友!” 作为输出?