Eine Ausnahme auslösen, wenn ein optionales & lt; & gt; ist anwesend

Sagen wir, ich will, um zu sehen, wenn ein Objekt in einen stream, und wenn es nicht vorhanden ist, eine Exception zu werfen. Eine Möglichkeit, die ich tun könnte, wäre mit der orElseThrow Methode:

List<String> values = new ArrayList<>();
values.add("one");
//values.add("two");  //exception thrown
values.add("three");
String two = values.stream()
        .filter(s -> s.equals("two"))
        .findAny()
        .orElseThrow(() -> new RuntimeException("not found"));

Was ist mit der Rückseite? Wenn möchte ich eine exception werfen, wenn eine übereinstimmung gefunden wird:

String two = values.stream()
        .filter(s -> s.equals("two"))
        .findAny()
        .ifPresentThrow(() -> new RuntimeException("not found"));

Konnte ich nur store die Optionalund tun das isPresent - check nach:

Optional<String> two = values.stream()
        .filter(s -> s.equals("two"))
        .findAny();
if (two.isPresent()) {
    throw new RuntimeException("not found");
}

Gibt es eine Möglichkeit, dies zu erreichen ifPresentThrow Art von Verhalten? Versucht zu tun, werfen auf diese Weise eine schlechte Praxis?

InformationsquelleAutor der Frage mkobit | 2015-02-19

Schreibe einen Kommentar