首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重基方法拦截,完全重写方法

重基方法拦截,完全重写方法
EN

Stack Overflow用户
提问于 2017-07-15 13:59:26
回答 1查看 271关注 0票数 0

我正在尝试使用ByteBuddy进行一些运行时代码的更改。我遇到的问题是,当我试图重新建立一个方法的基础以在末尾添加一个拦截调用时,整个方法会被替换,并且没有声明和调用的任何$original()方法。

这是我用来进行适当转换的代码

代码语言:javascript
复制
ByteBuddy()
    .rebase(clazz)
     .method(ElementMatchers.named("onEnable"))
     .intercept(MethodDelegation.to(TestInjector()))
     .make()
     .saveIn(dataFolder)

clazz和dataFolder是在上面定义的,并不是问题的根源。

这是注射器方法的签名:

public void intercept(@This JavaPlugin pl)

在分析它输出的代码时,类与预转换相同,但是在onEnable方法中调用的所有代码都已被删除,并替换为单个方法委托。是否有一种方式,使用这样的方法,让我保留现有的方法主体,但添加一个委托调用的头部的方法呢?

EN

回答 1

Stack Overflow用户

发布于 2017-07-16 12:13:00

如果要调用原始方法,可以使用"andThen“将一个andThen链接到拦截器。这指示Buddy在委托调用之后调用原始方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45119026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档