嵌套获得性能

del*_*ita 3 java

在Java中,如果我不断使用嵌套的get来检索值,是否会有性能损失?例如:

String firstname = getOffice().getDepartment().getEmployee().getFirstName();
String lastname = getOffice().getDepartment().getEmployee().getLastName();
String address = getOffice().getDepartment().getEmployee().getAddress();
Run Code Online (Sandbox Code Playgroud)

VS:

Employee e = getOffice().getDepartment().getEmployee();
String firstname = e.getFirstName();
String lastname = e.getLastName();
String address = e.getAddress();
Run Code Online (Sandbox Code Playgroud)

第二版会更快,因为它的"跳跃"更少吗?

T.J*_*der 9

这完全取决于getXYZ呼叫的作用.如果它们是基础字段的简单访问者,那么不是,而不是HotSpot(Oracle的JVM),因为如果有任何需要,它们将被优化.另一方面,如果他们做任何复杂的工作(遍历btree等),那么当然他们必须反复做这项工作(除非HotSpot可以向自己证明这些调用是幂等的,如果代码有任何复杂性变得不太可能).(重复这项工作是否重要是另一个问题;除非你看到实际的性能问题,否则不要担心.)

但是,第二个是很多更具可读性和可维护性.这是使用它的更有力的理由.