这是内联的一个例子吗?
final class Executive extends Manager
{
public raiseSalary(int byPercent)
{
return salary;
}
}
答案 0 :(得分:3)
这是内联的一个例子吗?
不,不是。
最终关键字与内联之间是否有任何关系?
有点儿。阅读本文:
与许多提示的含义相反,方法被宣布为最终 无法通过编译器安全地内联,因为该方法可以 在运行时有一个非最终声明。
要了解原因,假设编译器查看类A和子类B,和 子类C并看到A中的最终方法,它将其内联到C. 但是在运行时,为A和B加载的版本是不同的 该方法在A中不是final,在B中重写。然后C使用 错误内联版本。
答案 1 :(得分:1)
不,它不是'内联' 内联是指编译器决定用函数体替换函数调用 请阅读此处以获取完整示例https://stackoverflow.com/a/3925068/3743987
答案 2 :(得分:0)
Java编译器没有内联最终的类或方法。您可以查看this文章。
据我所知,内联适用于原始常量语句。例如,Java编译器在编译阶段将所有出现的MY_NUMBER
常量替换为10。因此,在运行时,Java不需要访问内存来读取MY_NUMBER
的值。
private static final int MY_NUMBER = 10;