微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用ByteBuddy哪种方式表示原始类常量更好?

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

我知道第一个在常量池中创建了一个“ true”动态常量。我知道第二个字节是ByteBuddy专门识别的,最终导致在某种程度上将某种类常量存储在常量池中。 (例如,您可以在FixedValue#value(TypeDescription)的文档中看到,TypeDescription最终将以某种未指定的,非特定于ByteBuddy的特定格式转换为常量池中的常量,(大概)不是与动态常数相同。)

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

给出所有这些:我应该使用JavaConstant.Dynamic.ofPrimitiveType(Class)来代表常量的原始类,还是应该使用TypeDescription.ForLoadedType.of(Class)来使其不变?我缺少一种表示形式或另一种表示形式的优势吗?

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。