Java 7中使用Guava的Optional对象的条件运算符

时间:2015-03-18 15:43:57

标签: java guava optional conditional-operator

我想在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>。有关如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:3)

在Java 7上,只需明确指定类型

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()方法是通用的。

在Java 8中,由于一些改进的类型推理,你的代码将编译得很好。