我正在研究Byte Buddy是否适合我使用。我正在看这个answer,它讨论了如何使用Byte Buddy,一个人可以将用类加载器Foo
加载的类A
命名为Bar
并在其上重新定义另一个类加载器B
。这是令人难以置信的。
我的问题是:
是否可以在类加载器Foo
上有一个由A
创建的对象,并转换为来自类加载器{{1]的Bar
的对象}}?我现在想到的解决方案是基本上从B
序列化对象,然后编辑序列化的字节以重命名类的名称。如果我可以使用Byte Buddy安全地执行操作,那将是很好的。另一种解决方案是使用Transloader。
是执行上述SO answer
非常感谢您。
答案 0 :(得分:1)
您始终可以在不使用Java代理的情况下在另一个类加载器中加载类。至于翻译类,将一个类名的符号替换为花药应该不是问题,但是您需要注意可能存在该类名的串行版本UID。 Byte Buddy是一个代码生成库,不会为此类操作添加任何额外的帮助。