【发布时间】:2012-10-25 14:44:18
【问题描述】:
我有一个产生Optional<String>的方法
但是这个 String 必须在另一个应用程序级别解析为 Integer 或 Long。
我有一个Function<String, Integer> 可以应用于字符串,以产生一个整数。
此转换可能会失败,因为 String 可能不是 Integer 可解析值。
我想在转换失败时返回 Optional,而不是抛出解析异常。
我不能让 STRING_TO_INTEGER_FUNCTION 返回 null,因为 Guava 不允许这样做:
Exception in thread "main" java.lang.NullPointerException: Transformation function cannot return null.
因此,我唯一能做的就是拥有一个Function<String,Optional<Integer>>,但最终结果是Optional<Optional<Integer>>,这并不是很酷,因为我可能需要对其应用其他转换。
有人知道我如何在 Guava 中做类似的事情吗?
Optional.of("Toto").transform(STRING_TO_INTEGER_FUNCTION) = // Optional<Integer> ?
谢谢
【问题讨论】: