使用ByteBuddy覆盖运行时类

问题描述 投票:0回答:1

我已经基于java.io.File创建了一个自定义文件:

class CloudFile extends java.io.File {}

使用ByteBuddy是否有可能(在运行时)能够用新的java.io.File替换对类CloudFile的所有调用,并且化装

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

或者,否则,是一个更合理的解决方案,使用ByteBuddy创建将覆盖java.io.File的类加载器-问题是对此采取正确的做法是什么?

我这样创建了一个基于java.io.File的自定义文件:类CloudFile扩展了java.io.File {} ByteBuddy是否有可能(在运行时)替换对java类的所有调用。 io ....

java byte-buddy
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.