gpt4 book ai didi

java - 使用 `final` 方法

转载 作者:搜寻专家 更新时间:2023-11-01 02:11:24 26 4
gpt4 key购买 nike

我知道 final 关键字在方法上的用途之一是强制子类使用相同的方法实现。但是,通过允许编译器将对方法的调用转换为内联 java 代码来提高效率是什么意思呢?我刚读到这篇文章,但不太理解这个想法。

到这个程度,我不明白内联Java代码的含义。如何调用 final 方法?在编译调用 final 方法的代码期间,Java 是否会通知或执行任何特殊操作?

最佳答案

如果您使用 final,字节​​码的效率不会有明显的提高或降低,因为 Java 字节码编译器通常很少进行优化。效率奖励(如果有的话)将出现在 JIT 编译器生成的 native 代码中。

理论上,使用 final 可以为 JIT 编译器提供一个提示,帮助它进行优化。实际上,最近的 HotSpot JIT 编译器可以通过忽略您的提示来做得更好。例如,现代 JIT 编译器通常会执行全局分析,以查明给定方法调用是否是对应用程序当前加载类的上下文中的叶方法的调用。此分析比您的最终提示更准确,运行时甚至可以检测何时加载了使分析无效的新类……并为受影响的代码重做分析和 native 代码生成。

所以最好的做法是使用 final 来(广义上)表达你的设计意图,并实现你需要的其他语义效果。 (例如,使用 final 修饰符可以在实现线程安全的不可变类型方面发挥重要作用。)如果您使用 final 作为优化提示,您将不会取得太大成就,并且会使您的代码更难修改和扩展。

字体:link

关于java - 使用 `final` 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405105/

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