user1888955:
どのように私は次のコードは、ストリーム形式に変換することができ、フィルタ、foreachのマップを試してみましたが、まだ何かが間違っています。
private Status validate(final Type type, final String id) {
for(Validator validator : validators) {
Status status = validator.validate(type, id);
if (status == Status.INVALID || status == Status.VALID) {
return status;
}
}
return Status.UNKNOWN;
}
Mureinik:
レッツ・ブレーク、このループダウン。あなたは最初にすべてのバリデータおよびコールオーバー行くvalidate
のです- map
操作を。場合status
であるINVALID
かVALID
、あなたはそれを返す-それはだfilter
と操作findFirst
ロジック。あなたがものを見つけることができない場合や、あなたが返すUNKNOWN
-だというorElse
操作。すべてを一緒に入れて:
private Status validate(final Type type, final String id) {
return validators.stream()
.map(v -> v.validate(type, id))
.filter(s -> s == Status.INVALID || s == Status.VALID)
.findFirst()
.orElse(Status.UNKNOWN);
}