繁体   English   中英

番石榴和Java 7中的“ Flatten”可选

[英]“Flatten” Optional in guava and java 7

我正在使用番石榴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());
    }
};

这段代码:

    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()。 可能有一些类似地图功能的Optional。

已经有人建议在Guava的Optional添加此“地图”功能。但是,由于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()
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM