Prenez les deux exemples de code:
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
Autant que je sache, la différence la plus évidente est que l'option Facultatif nécessite la création d'un objet supplémentaire.
Cependant, de nombreuses personnes ont commencé à adopter rapidement les options. Quel est l'avantage d'utiliser des options par rapport à une vérification nulle?
if
déclarations sont tellement la dernière décennie, et tout le monde utilise des abstractions de monade et des lambdas maintenant.
if(x.isPresent) fails_on_null(x.get)
vous quittez le système de type et devez garder la garantie que le code ne se cassera pas "dans votre tête" sur la distance (certes courte) entre la condition et l'appel de fonction. Dans optional.ifPresent(fails_on_null)
le système de type, cette garantie est faite pour vous, et vous n'avez pas à vous inquiéter.
Optional.ifPresent
(et diverses autres constructions Java) est que vous ne pouvez modifier efficacement que les variables finales et ne pouvez pas lever d'exceptions vérifiées. C'est une raison suffisante pour éviter souvent ifPresent
, malheureusement.