Jam*_*hon 5 java variables getter performance reference
这样做有什么不同吗?
Field field = something.getSomethingElse().getField();
if (field == 0) {
//do something
}
somelist.add(field);
Run Code Online (Sandbox Code Playgroud)
与
if (something.getSomethingElse().getField() == 0) {
//do something
}
somelist.add(something.getSomethingElse().getField());
Run Code Online (Sandbox Code Playgroud)
通过getter引用字段会导致性能损失,还是与引用指定变量相同?我知道变量只是对内存空间的引用,因此getter应该是另一种获取内存空间的方法.
请注意,这是一个学术问题(只是好奇的学校),而不是一个实际问题.
假设getSomethingElse()
被定义为
public SomethingElse getSomethingElse() {
return this.somethingElse;
}
Run Code Online (Sandbox Code Playgroud)
性能差异将是最小的(如果它被内联则为零).然而,在现实生活中,你不能总是确定是这种情况 - 可能会在幕后发生一些处理(不一定在对象本身,但是,例如,通过AOP代理).因此,将结果保存在变量中以进行重复访问可能是一个好主意.
通过getter访问变量会导致方法调用存在差异.可以想象,JVM可以在某些情况下优化方法调用,但它是一种方法调用.
也就是说,如果代码中最大的瓶颈或性能问题是访问器方法的开销,我会说你没有太多担心.