Ich habe einen grundlegenden Zweifel an der Ausführung des folgenden Code-Block (Sample):java Verschachtelte Wenn oder einzelne wenn
String version = computer.getSoundcard().getUSB().getVersion();
Welche NullPointerException
wenn Soundcard
werfen könnte nicht da ist.
So habe ich,
Option 1:
if(computer!=null &&
computer.getSoundCard() !=null &&
computer.getSoundCard().getUSB()!=null) {
version = computer.getSoundcard().getUSB().getVersion();
}
Option 2:
if(computer !=null){
SoundCard sc = computer.getSoundCard();
if(sc!=null){
USB usb = sc.getUSB();
if(usb!=null){
version = usb.getVersion();
}
}
}
Gemäß meinem Verständnis der Option 1 haben zusätzlichen Aufwand als es muss den gleichen Ausdruck multiple Tim bewerten es wie computer.getSoundCard()
3 mal, computer.getSoundCard().getUSB()
2 mal.
Ist mein Verständnis korrekt?
EDIT 1: Changed Option 2 von
version = computer.getSoundcard().getUSB().getVersion();
Können Sie Java 8 auf Ihrem Projekt verwenden ... Wenn ja, schau dir das an: https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html –
tat ich Sehen Sie das, und leider muss ich niedrigere Version von Java auch verwenden, ich will verstehen, welcher von diesen besser ist und warum. – Deva
Sie sind beide gut. Ich würde normalerweise mit Option 1 gehen, weil es prägnanter ist. Option 2 ist möglicherweise besser, wenn 1) Sie zu "version = usb.getVersion()" wechseln und 2) eine der Getter-Methoden langsam ist. – Andreas