我正在使用番石榴20.0和Java 7。 我有番石榴功能
public static Function<String, Optional<String>> UP
= new Function<String, Optional<String>>() {
@Override
public Optional<String> apply(String f) {
if (f.equals("test"))
return Optional.absent();
return Optional.of(f.toLowerCase());
}
};
此代码:
Optional<String> strNormal = Optional.of("test");
Optional<String> str = Optional.absent();
System.out.println("strNormal = " + strNormal.transform(UP));
System.out.println("str = " + str.transform(UP));
打印:
strNormal = Optional.of(Optional.absent())
str = Optional.absent()
但是在两种情况下我如何都能收到Optional.absent()。可能有诸如map函数之类的Optional。
答案 0 :(得分:2)
已经有人建议在Guava的Optional
中添加此“地图”功能。但是,rejected是Optional
的遗留物,将被冻结。
您最好的选择是编写一个实用程序函数,例如:
public static Optional<F> transform(Optional<T> optional, Function<T, F> transformer) {
try {
return optional.transform(transformer);
catch (NullPointerException e) {
return Optional.<F>.absent()
}
}