ByteBuddy使用相同类中的构造函数进行参数转换时的问题。
创始人
2025-01-12 21:30:35
0

在ByteBuddy中,我们可以使用.withArgument转换参数来操作类的构造函数。但是,当我们尝试在同一个类中使用相同的构造器进行对象实例化并进行参数转换时,会出现问题。 为了解决这个问题,我们可以使用下面的代码设置从同一个类中调用构造函数并进行参数转换:

Class dynamicType = new ByteBuddy()
    .subclass(ExampleClass.class)
    .constructor(ElementMatchers.any())
    .intercept(MethodDelegation.to(ExampleConstructorInterceptor.class))
    .make()
    .load(getClass().getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
    .getLoaded();

ExampleClass instance = (ExampleClass) dynamicType
    .getConstructor(int.class, String.class)
    .newInstance(123, "example");

然后,我们需要创建一个ExampleConstructorInterceptor类,以进行参数转换。例如,如果我们想将第一个参数加倍,以便在实例化ExampleClass时,我们可以这样做:

public class ExampleConstructorInterceptor {
    public static void intercept(@Origin Constructor constructor,
                                 @AllArguments Object[] allArguments) {
        allArguments[0] = ((int) allArguments[0]) * 2;
    }
}

这个拦截器将拦截所有的构造函数调用,并在这些调用中将第一个参数加倍。

通过这个方法,我们可以使用ByteBuddy在同一类中的构造函数上进行参数转换。

相关内容

热门资讯

第三分钟带你辅助!蛮王辅助,哈... 【亲,哈灵永久辅助 这款游戏可以开挂的,确实是有挂的,很多玩家在这款哈灵永久辅助中打牌都会发现很多用...
七分钟带你了解!邯郸胡乐修改器... 邯郸胡乐修改器视频 无需打开直接搜索微信:136704302本司针对手游进行,选择我们的四大理由: ...
透视科技"闽乐乐51... 透视科技"闽乐乐510k脚本"开挂(透视)辅助神器(原来真的有挂)-哔哩哔哩;1.闽乐乐510k脚本...
第2分钟带你辅助!欢乐对决合作... 【亲,欢乐对决合作辅助怎么玩 这款游戏可以开挂的,确实是有挂的,很多玩家在这款欢乐对决合作辅助怎么玩...
我来教大家"顺欣茶楼... 我来教大家"顺欣茶楼软件"开挂(透视)辅助工具(一直是真的有挂的)-哔哩哔哩;1、点击下载安装,顺欣...
第7分钟带你了解!科乐辅助工作... 【亲,科乐辅助工作室 这款游戏可以开挂的,确实是有挂的,很多玩家在这款科乐辅助工作室中打牌都会发现很...
4分钟带你辅助!填大坑辅助软件... 4分钟带你辅助!填大坑辅助软件,wepoker辅助工具,揭秘教程(有挂分享)-哔哩哔哩;相信小伙伴都...
最新研发"九九联盟辅... 最新研发"九九联盟辅助"开挂(透视)辅助插件(果然确实是有挂)-哔哩哔哩;亲真的是有正版授权,小编(...
第4分钟带你了解!微信小程序雀... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
第二分钟带你详情!相约互娱辅助... 第二分钟带你详情!相约互娱辅助,阿拉斗牌辅助,可靠教程(有挂神器)-哔哩哔哩;无需打开直接搜索微信(...