だが、私は任意の値を返さずに、単にオブジェクトに変換を行うvoidメソッドを持っている、と私はこのように、ストリームマップ()関数のコンテキストでそれを使用したいとしましょう:ストリームマッピングのJavaメソッドのvoidメソッド?
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);
}
例は単純化のために作られています。実際の方法は、オブジェクトのUUIDを取り除く以外の何かをしています。
とにかく、上記のようなシナリオでvoidメソッドを使用する方法はありますか? 確かに、私はメソッドが変換されたオブジェクトを返すようにすることができますが、それはポイントの外にあり、デザインに違反しています(メソッドは無効にする必要があります)。あなたは、これはあなたが何をしたいかであることが確実な場合
これは、peekの設計がデバッグの目的であるため、適切な方法ではありません。 https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#peek-java.util.function.Consumer- – Cupitor