我对以下代码块(示例)的执行有一个基本的疑问:
String version = computer.getSoundcard().getUSB().getVersion();
如果Soundcard
不在那里,可能会抛出NullPointerException
。
所以我做到了,
选项1 :
if(computer!=null &&
computer.getSoundCard() !=null &&
computer.getSoundCard().getUSB()!=null) {
version = computer.getSoundcard().getUSB().getVersion();
}
选项2 :
if(computer !=null){
SoundCard sc = computer.getSoundCard();
if(sc!=null){
USB usb = sc.getUSB();
if(usb!=null){
version = usb.getVersion();
}
}
}
根据我的理解,选项1会有额外的开销,因为它必须多次计算相同的表达式,比如computer.getSoundCard()
3次,computer.getSoundCard().getUSB()
2次。
我的理解正确吗?
EDIT 1:将选项2从
version = computer.getSoundcard().getUSB().getVersion();
https://stackoverflow.com/questions/32643048
复制相似问题