“扁平”在番石榴和java 7中可选

问题描述 投票:1回答:1

我正在使用guava 20.0和java 7.我有guava功能

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

java guava
1个回答
2
投票

有人已经建议在番石榴的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()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.