在Java中将Optional.absent()元素添加到集合中

时间:2013-06-04 10:14:33

标签: java guava

我在这里找不到诀窍:我想要一个函数来返回一个可选对象列表,这意味着我的列表确实包含了这么多元素,但是其中一些元素无效。

public Optional<String> getMyObjects() {
  List<Optional<String>> result = Lists.newArrayListWithCapacity(2);

  result.add(Optional.of("This value is valid"));
  result.add(Optional.absent()); // Compiler error

  return result;
}

这不编译:

The method add(Optional<String>) in the type List<Optional<String>> is not 
applicable for the arguments (Optional<Object>)

你会怎么说?我尝试过铸造没有成功

3 个答案:

答案 0 :(得分:7)

尝试:

result.add(Optional.<String>absent());

在非常正式的Java Generics常见问题解答中阅读更多about parametrized methodsexplicit type argument specification

答案 1 :(得分:4)

使用

result.add(Optional.<String>absent())

强制使用泛型类型。

或者,让编译器推断它:

Optional<String> o = Optional.absent();
result.add(o);

答案 2 :(得分:3)

尝试:

result.add(Optional.<String> absent());

absent()方法已参数化。