Nehmen Sie die beiden Codebeispiele:
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
Soweit ich das beurteilen kann, besteht der offensichtlichste Unterschied darin, dass für das optionale Objekt ein zusätzliches Objekt erstellt werden muss.
Viele Menschen haben jedoch schnell begonnen, Optionals einzuführen. Was ist der Vorteil der Verwendung von Optionen gegenüber einer Nullprüfung?
if
Aussagen im letzten Jahrzehnt soooooooooooooooooooooo sooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
if(x.isPresent) fails_on_null(x.get)
Sie das Typensystem verlassen und die Garantie behalten müssen, dass der Code über die (zugegebenermaßen kurze) Distanz zwischen der Bedingung und dem Funktionsaufruf nicht "in Ihrem Kopf" zerbricht. Im optional.ifPresent(fails_on_null)
Typensystem macht sich diese Garantie für Sie bezahlt, und Sie müssen sich keine Sorgen machen.
Optional.ifPresent
(und verschiedenen anderen Java-Konstrukten) besteht darin, dass Sie nur endgültige Variablen effektiv ändern und keine geprüften Ausnahmen auslösen können. Grund genug ifPresent
, dies leider oft zu vermeiden .