2017-03-23 4 views
-1

メソッドによって返されるオプションに基づいてフローを構築しようとしています。オプションのメソッドを使用してelseブロックを取り除く方法

私の質問は:たとえば、Optional<int> (some)を取得し、別のフローをうまく実行した場合に分割するフローを構築する方法はありますか?

質問は本当にこの場合、他のブロックを取り除く方法である(他に三元の文を切り替える場合は使用しない):

は、あなたが例を提供してくださいすることができます?

... 
.filter(f -> getFolderLastIdx(f).isPresent()) 
.flatMap(newLoadFile -> executeCommand(Id)) 
.ifPresent(newLoadFile -> { 
    if (executeCommand(Id)) { 
     moveFileStatusFlow.accept(newLoadFile, transactionId, "success"); 
     executePostScriptCommand(transactionId, batchId); 
    } else { 
     moveFileStatusFlow.accept(newLoadFile, transactionId, "fail"); 
} 

答えて

2

いいえ、Optionalだけでなく、その原始的な対応は、本質的にタスクのこの種を扱うことができません。これは、制御フロー構成を完全に置き換えるようには設計されていません。代わりに、それらの無限のヌルチェックを取り除くことに焦点を合わせます。

関連する問題