我想在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>
。有关如何解决这个问题的任何想法?
答案 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中,由于一些改进的类型推理,你的代码将编译得很好。