Byte Buddy:将类的对象从一个类加载器转换为另一个类加载器中加载的同一个类

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

我正在探索Byte Buddy是否适合我使用。我正在看这个answer谈论如何与Byte Buddy,一个人可以拿一个类Foo加载类加载器A,重命名为Bar并重新定义在另一个类加载器B。这是令人难以置信的。我的问题是:

  1. 是否有可能在类加载器Foo上创建一个从A创建的对象并转换为来自类加载器BarB对象?我现在想到的解决方案是基本上从Foo序列化对象,然后编辑序列化字节以重命名类的名称。如果我能用Byte Buddy安全地做到这一点会很好。另一种解决方案是使用Transloader
  2. 是java-agent还是执行上述SO answer中描述的所有内容所需的任何特殊工具

非常感谢。

byte-buddy
1个回答
1
投票

您始终可以在不使用Java代理的情况下在另一个类加载器中加载类。至于翻译类,将一个类名的符号替换为anther应该不是问题,但是你需要注意序列版本的UID,其中类的名称可能是其中的一部分。 Byte Buddy是一个代码生成库,不会为此类操作添加任何额外帮助。

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