gpt4 book ai didi

java - 如何将 Opcodes 中 ASM 的 API 版本映射到 Java 版本?

转载 作者:行者123 更新时间:2023-12-03 21:11:35 28 4
gpt4 key购买 nike

ASM ClassVisitor 构造函数需要传递 Opcodes 之一的 ASM4 , ASM5 , ASM6 , ASM7 , ASM8 ASM9 .
我怎么知道是哪个 ASM#用于每个版本的Java?什么 ASM#我会用于 Java 8 吗?什么 ASM#我会用于 Java 11 吗?

最佳答案

ASM…常量描述了您的软件所需的最低 ASM 库版本。这对于兼容性至关重要,例如在访问者 API 中,当您覆盖旧版本中不存在的方法时,您在链接旧版本时不会注意到。该方法永远不会被调用。
因此,使用 ASM…常数允许更早地发现此类问题。这就是为什么一些实现类提供 a constructors not requiring the version number ,不允许用于子类,而它们的 constructor for subclasses确实需要它。由于只有子类可以覆盖方法,因此受此问题的影响。
如果您不打算将您的软件与旧版本的 ASM 库一起使用,只需使用与您当前的 ASM 库版本相对应的数字,即不带 EXPERIMENTAL 的最高版本。后缀。否则,我建议在开发和测试期间使用旧版本,这再次允许只使用最高的 ASM…该版本中存在的编号。
您可以使用最新的 ASM 库生成面向所有版本的类。这取决于您传递给 visit 的版本方法。这是 V1_8 适用于 Java 8 和 V11 对于 Java 11。这些常量的实际值与 the versions of the JVM specification 相同.

关于java - 如何将 Opcodes 中 ASM 的 API 版本映射到 Java 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63399682/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com