使用 ByteBuddy 表示原始 class 常量的哪种方式更好?

Which way of representing a primitive class constant is better using ByteBuddy?

ByteBuddy 提供了两种机制来表示原始的 Class 的常量:

我知道第一个在常量池中创建了一个“真正的”动态常量。我知道第二个被 ByteBuddy 特别识别并最终导致在常量池中存储某种 class 常量的其他路径。 (例如,您可以在 FixedValue#value(TypeDescription) 的文档中看到 TypeDescription 最终会以某种未指定的非 ByteBuddy 特定格式转换为常量池中的常量,(大概)不是与动态常量相同。)

我还知道 ByteBuddy 支持 JVM 回到 1.5,只有 JDK 版本 11 或更高版本支持真正的动态常量。我正在使用 JDK 15,个人不需要担心比这更早的任何事情。

考虑到这一切:我应该使用 JavaConstant.Dynamic.ofPrimitiveType(Class) 来制作常量表示原语 -classes 还是应该使用 TypeDescription.ForLoadedType.of(Class) 来制作它们?我是否缺少一种表示形式的某些优势?

动态常量是引导程序,它会导致最小的运行时开销。因此,静态常量可能是更好的选择,但它简化了您的代码,使用动态常量没有危险。