ソナーlintを使用してコードをスキャンすると、次のコードは「 "orElseThrow"の戻り値を使用する必要がある」としてバグを示します。
itemList.stream()
.filter(item -> orderItemId.equals(item.getId()))
.findAny()
.orElseThrow(() -> new BadRequestException("12345","Item Not Found"));
これは検証目的のためだけであり、このステートメントから何かを返す必要はありません。アイテムが存在するかどうかを検証する必要があります。
参考:Eclipseがsquidとしてクイックフィックスを表示:S2201
誰でもこのバグを解決する方法を知っていますか?
これは警告であると想定しています(orElseThrow()
によって返された値を使用しないことはエラーになりません)。
その警告を取り除きたい場合は、代わりにisPresent()
を使用してください:
_if (!itemList.stream().filter(i->orderItemId.equals(i.getId())).findAny().isPresent()) {
throw new BadRequestException("12345","Item Not Found");
}
_
または、Optional
sの使用を避け、代わりにanyMatch()
を使用します。
_if (!itemList.stream().anyMatch(i->orderItemId.equals(i.getId()))) {
throw new BadRequestException("12345","Item Not Found");
}
_