Java 8 en option: ifPresent objet de retour orElseThrow exception
Je suis en train de faire quelque chose comme ceci:
private String getStringIfObjectIsPresent(Optional<Object> object){
object.ifPresent(() ->{
String result = "result";
//some logic with result and return it
return result;
}).orElseThrow(MyCustomException::new);
}
Cela ne fonctionne pas, parce que ifPresent prend des Consommateurs interface fonctionnelle en tant que paramètre, qui a void accept(T t). Il ne peut pas retourner de valeur. Est-il un autre moyen de le faire ?
- Double Possible de la Bonne utilisation de l'Option.ifPresent()
Vous devez vous connecter pour publier un commentaire.
En fait ce que vous cherchez, c'est: Facultatif.carte. Votre code devrait ressembler à:
Je préfère omettre passage de la
Optional
si vous le pouvez. En fin de compte, vous ne gagnez rien à l'aide d'unOptional
ici. Un peu autre variante:Si vous avez déjà le
Optional
-objet à un autre appel, je voudrais encore vous recommandons d'utiliser lemap
-méthode, au lieu deisPresent
, etc. pour la simple raison, que je trouve plus lisible (clairement une décision subjective ;-)).Je préfère la cartographie assurez-vous que la valeur est disponible
ou un liner
Optional.map
vérifie si l'objet est disponible avant d'appeler la fonction de mappage. Mais au moins, vous de rechange 1 condition (value != null
) de cette façon.Utiliser le
map
fonction de la place. Il transforme la valeur à l'intérieur de l'option.Comme ceci:
Deux options ici:
Remplacer
ifPresent
avecmap
et l'utilisationFunction
au lieu deConsumer
Utilisation
isPresent
: