Java &引用;“展平”;在番石榴和爪哇7中可选

Java &引用;“展平”;在番石榴和爪哇7中可选,java,guava,Java,Guava,我正在使用guava 20.0和Java7。 我有番石榴的功能 public static Function<String, Optional<String>> UP = new Function<String, Optional<String>>() { @Override public Optional<String> apply(String f) { if (f.equals("

我正在使用guava 20.0和Java7。 我有番石榴的功能

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());
    }
};

但在这两种情况下,我如何接收可选的.缺席()。可能有一些东西类似于可选的map函数。

已经有人建议在Guava的
Optional
中添加此“map”函数。但是,这是因为
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()
    }
}
公共静态可选转换(可选,函数转换器){
试一试{
返回可选。转换(变压器);
捕获(NullPointerException e){
返回可选..缺席()
}
}

我认为他的最佳选择是升级到Java 8或Java 11;-)似乎我找到了解决方案
strNormal = Optional.of(Optional.absent())
str = Optional.absent()
public static Optional<F> transform(Optional<T> optional, Function<T, F> transformer) {
    try {
        return optional.transform(transformer);
    catch (NullPointerException e) {
        return Optional.<F>.absent()
    }
}