两者之间有什么区别吗
Field field = something.getSomethingElse().getField();
if (field == 0) {
//do something
}
somelist.add(field);
与
if (something.getSomethingElse().getField() == 0) {
//do something
}
somelist.add(something.getSomethingElse().getField());
通过getter引用字段会导致性能下降,还是与引用分配的变量相同? 我知道变量只是对内存空间的引用,因此,getter应该只是获取该内存空间的另一种方法。
请注意,这是一个学术问题(只是好奇的学校),而不是实际问题。
最佳答案
假设getSomethingElse()
定义为
public SomethingElse getSomethingElse() {
return this.somethingElse;
}
性能差异将很小(如果内联,则为零)。但是,在现实生活中,您不能总是确定情况是否如此-幕后可能会发生一些处理(不一定在对象本身中,而是通过AOP代理进行)。因此,将结果保存在变量中以进行重复访问可能是一个好主意。