Je suis en train de remplacer ci-dessous bloc de code avec option, voulez simplement vérifier qu'il y aura de mauvaises conséquences de le faire comme la performance ou quoi que ce soit en tant que tel?
Code existant:
UserObj userObj=new UserObj();
Object result = fetchDetails();
if (null != result) {
userObj.setResult(result.toString());
}
Avec Java 8 Optional
:
UserObj userObj=new UserObj();
Optional.ofNullable(fetchDetails()).ifPresent(var -> userObj.setResult(var.toString()));
Faire ce changement juste pour faire concise look de code comme il y a beaucoup de blocs de contrôle null dans mon code.
Tout ce que je pense d' abord vous malentendu dans le but de Optional
. Il est non seulement pour remplacer
if(obj != null){ ... }
Le point principal de Optional
est de fournir un moyen pour une fonction renvoyant une valeur indiquant l'absence d'une valeur de retour. S'il vous plaît lire cet article pour plus de détails.
L'utilisation correcte de Optional
votre cas serait de retour en option ResultObj
de la fetchDetails
méthode:
Optional<ResultObj> fetchDetails() {
...
}
Ensuite , vous enchaînez simplement les méthodes sur les cheveux Optional
que vous avez fait avant.
Mise à jour
Si vous ne pouvez pas modifier fetchDetails
il y a encore une option d'envelopper dans votre propre méthode comme suit:
Optional<ResultObj> fetchOptionalDetails() {
return Optional.ofNullable(fetchDefails());
}
Création d'une nouvelle méthode ajoutera une surcharge minuscule, mais le code sera beaucoup plus facile à lire:
fetchOptionalDetails().ifPresent(details -> /* do something */);