Java getter是否会导致性能下降

ala*_*lan 5 java

如果我有代码

int getA(){
 return a;
}
Run Code Online (Sandbox Code Playgroud)

然后做类似的事情

int b = obj.getA();
Run Code Online (Sandbox Code Playgroud)

代替

int b = obj.a;
Run Code Online (Sandbox Code Playgroud)

这是否意味着必须推送和弹出堆栈最终减慢我的代码?

Mic*_*urr 4

JIT 编译器将内联该方法。

代码应该看起来像

int b = obj.GetA();
Run Code Online (Sandbox Code Playgroud)

  • @cletus,现代 JVM 显然可以检测到该方法在使用它的实际位置中没有被覆盖并内联它。如果这种情况发生变化,相关代码将返回解释,然后可能再次优化。 (4认同)