可以使ByteBuddy静态引用持久化吗?

问题描述

ByteBuddy提供了一种功能,该功能定义了一个引用了另一个对象的类(请参见the MethodCall#withReference() method)。很好,很方便。我的问题是关于此参考文献的性质。

我不好意思这么说,但是我意识到我一直在假设存储在此静态字段中的引用将是持久性的。也就是说,如果我设置ByteBuddy使其使用可预测的类名,然后在以后从其他VM加载它们,我一直假设withReference调用中传递的任何内容都将被……序列化?储存?某种程度上来说。看来不是。

(我猜测(尚未研究)LoadedTypeInitializer可能甚至通过反射被调用,以使用对内存中已经存在的某些其他字节码的简单引用来填充此字段,即我猜该引用是一个简单的指针,在VM退出后仍然悬空。)

我的问题是:ByteBuddy API很大,所以我经常发现我缺少一些东西- ByteBuddy中是否有设施可以让我持久存储对另一个对象的引用?还是我必须使用序列化或类似方法自己滚动?

解决方法

啊;我发现ByteBuddy support for dynamic constants可以为我提供大部分所需的东西。