gpt4 book ai didi

java - 使用 ByteBuddy 覆盖运行时类

转载 作者:行者123 更新时间:2023-12-02 08:55:29 25 4
gpt4 key购买 nike

我创建了一个基于 java.io.File 的自定义文件,因此我有:

类 CloudFile 扩展了 java.io.File {}

ByteBuddy 是否可以(在运行时)替换对类 java.io.File 的所有调用,并使用新的 伪装它。云文件

因此,例如,我创建了一个应用程序,该应用程序使用广泛使用 java.io.File 的库,我想要的是对该库对 File 类的任何调用在我的应用程序中将调用 CloudFile

或者,一个更合理的解决方案,使用 ByteBuddy 创建一个类加载器来覆盖 java.io.File ——问题是正确的做法是什么?

最佳答案

您可以使用 Java 代理重新定义类,Byte Buddy 允许使用 AgentBuilder 构建该代理。然后,您可以指示它重新定义所有库代码,其中您用 CloudFile 替换对 File 的构造函数调用,我认为它对相关方法具有虚拟覆盖。

为了替换构造函数,请创建一个转换器,在构造函数被切换的位置注册一个MemberSubstitution

关于java - 使用 ByteBuddy 覆盖运行时类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60520610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com