虽然代码不比普通条件表达式更具可读性,但是有一个简单的解决方案:
public OptionalInt getInt() { return Stream.of(someString).filter(s -> s != null && s.matches("\d+")) .mapToInt(Integer::parseInt).findAny();}使用Java 9,您可以使用
public OptionalInt getInt() { return Stream.ofNullable(someString).filter(s -> s.matches("\d+")) .mapToInt(Integer::parseInt).findAny();}如前所述,它们都不比普通的条件表达式更具可读性,但是我认为,它看起来仍然比使用条件表达式更好
mapOrElseGet(而且第一个变体不需要Java 9。



