我目前正在处理许多嵌套级别对象,并且正在考虑性能.
所以我要说我有以下课程:
class Address {
private String doorNumber;
private String street;
...
}
Run Code Online (Sandbox Code Playgroud)
和另一类客户.
class Customer {
private List<Address> addressList;
private String firstName;
.....
.....
.....
}
Run Code Online (Sandbox Code Playgroud)
当我尝试访问它时,如下所示:
public static void main(String[] str) {
Customer customer = new Customer();
// ... and add addresses to this Customer object.
// Set 1
// And if I then do...
customer.getAddressList().get(0).getHouseNumber();
customer.getAddressList().get(0).getStreet();
// OR
// Set 2
Address address = customer.getAddressList().get(0);
address.getHouseNumber();
address.getStreet()
}
Run Code Online (Sandbox Code Playgroud)
我知道访问地址的第一组行不是干净的代码,我假设编译器会对此进行排序,但事实并非如此.因为当我对我的代码进行反编译时,我得到完全相同的东西,所以我不确定编译器是否正在进行任何优化.所以我的第一个问题是为什么编译器不清理它并将其分配给临时变量?
我的下一个问题是,这与性能有关吗?除了第一个不是很干净的代码之外,哪个是两者中最优的性能代码.这是否意味着,我的第二组代码行将在编译期间内部转换为第一组代码?
最后是最后一个,在类上调用变量比使用getter方法更优化吗?我只是在考虑没有干净编码的表现.