Java utiliser la méthode void pour la cartographie de la chaîne?
Disons que j'ai une méthode void cela ne vient transformation sur un objet, sans aucun retour de valeur, et je veux l'utiliser dans un contexte de flux de carte (), comme ceci:
public List<MyObject> getList(){
List<MyObject> objList = ...
return objList.stream().map(e -> transform(e, e.getUuid())).collect(Collectors.toList());
}
private void transform(MyObject obj, String value){
obj.setUuid("prefix" + value);
}
L'exemple est constitué pour plus de simplicité - la méthode est de faire autre chose que juste de déblayage l'UUID d'un objet.
De toute façon, comment est-ce possible d'utiliser une méthode void dans un scénario comme ci-dessus?
Sûrement, j'ai pu faire la méthode de retour de l'objet transformé, mais c'est d'ailleurs le point et est en train de violer la conception (la méthode doit être nulle).
OriginalL'auteur Nestor Milyaev | 2017-01-18
Vous devez vous connecter pour publier un commentaire.
Semble que c'est un cas d'utilisation forcée de java 8 flux de données. Au lieu de cela, vous pouvez le réaliser avec forEach.
OriginalL'auteur Murat Karagöz
Si vous êtes sûr que c'est ce que vous voulez faire, puis utilisez peek au lieu de la carte
OriginalL'auteur Eugene
En plus de Eugène réponse vous pouvez utiliser
Stream::map
comme ceci:En fait, vous ne voulez pas transformer votre actuelle éléments et de les collecter dans une nouvelle
List
.Au lieu de cela, vous voulez appliquer une méthode pour chaque entrée dans votre
List
.Par conséquent, vous devez utiliser
Collection::forEach
et le retour de laList
.OriginalL'auteur Flown