Я могу переопределить класс, чтобы заменить метод Foo
на Bar
, например:
ByteBuddy byteBuddy = new ByteBuddy();
byteBuddy
.redefine(Bar.class)
.name(Foo.class.getName())
.make()
.load(Foo.class.getClassLoader(),
ClassReloadingStrategy.fromInstalledAgent());
Foo foo = new Foo()
foo.m()
// output is bar
Как я могу использовать AgentBuilder
сделать ту же работу, заменить все Foo
методы, не делегат
new AgentBuilder.Default()
.with(AgentBuilder.Listener.StreamWriting.toSystemOut())
.with(RedefinitionStrategy.RETRANSFORMATION)
.type(ElementMatchers.is(Foo.class))
.transform(
( builder, typeDescription, classLoader, module ) ->
builder.method(ElementMatchers.any()).intercept( //how to write ?)
).installOnByteBuddyAgent();
Спасибо!