java.util.Optional到java.lang.Iterable?

时间:2016-09-28 23:01:36

标签: java optional

有没有比编写自定义函数更好的选择?最好是股票JDK?

如果没有,是否有比以下更好的实施:

public static <T> Iterable<T> toIterable(Optional<T> o) {
    if (o.isPresent()) {
        return Collections.singletonList(o.get());
    } else {
        return Collections.emptyList();
    }
}

1 个答案:

答案 0 :(得分:3)

使用Optional.isPresent()通常是代码味道 - 它与!= null没有区别。

public static <T> Iterable<T> toIterable(Optional<T> o) {
    return o.map(Collections::singleton)
            .orElseGet(Collections::emptySet);
}

此外,单身Set是... singleton更好的模型。