Java 中 Guava 可选对象的条件运算符 7

Conditional operator with Guava's Optional object in Java 7

我想在 Java 7 中使用条件运算符,其中返回的对象是 com.google.common.base.Optional,像这样:

import com.google.common.base.Optional;
public Optional<String> getFirstElement(String str, String separator) {
    final String[] strs = str.split(separator);
    return strs.length == 0 ? Optional.absent() : Optional.of(strs[0]);
}

但是,Optional.absent() 的类型是 Optional<?> 而不是 Optional<String>。关于如何解决这个问题的任何想法?

关于Java7,只需明确指定类型

public Optional<String> getFirstElement(String str, String separator) {
    final String[] strs = str.split(separator);
    return strs.length == 0 ? Optional.<String>absent() : Optional.of(strs[0]);
}

Optional#absent() 方法是通用的。

在 Java8 中,由于一些改进的类型推断,您的代码将可以正常编译。