两者之间有什么区别吗

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代理进行)。因此,将结果保存在变量中以进行重复访问可能是一个好主意。

08-06 20:35