在对象上调用 getters 与将其存储为局部变量(内存占用、性能)
在下面的代码中,我们进行两次调用:listType.getDescription()
for (ListType listType: this.listTypeManager.getSelectableListTypes())
{
if (listType.getDescription() != null)
{
children.add(new SelectItem( listType.getId() , listType.getDescription()));
}
}
我倾向于重构代码以使用单个变量:
for (ListType listType: this.listTypeManager.getSelectableListTypes())
{
String description = listType.getDescription();
if (description != null)
{
children.add(new SelectItem(listType.getId() ,description));
}
}
我的理解是,JVM以某种方式针对原始代码进行了优化,尤其是像.children.add(new SelectItem(listType.getId(), listType.getDescription()));
比较这两个选项,哪一个是首选方法,为什么?这是在内存占用,性能,可读性/易用性以及我现在没有想到的其他方面。
后者的代码片段何时变得比前者更有利,也就是说,当使用临时局部变量变得更加理想时,是否有任何(近似)调用次数,因为总是需要一些堆栈操作来存储对象?listType.getDescription()
listType.getDescription()
this