3

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

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>)

你会怎么写?我试过铸造但没有成功

4

3 回答 3

8

尝试:

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

在非官方的 Java 泛型常见问题解答中阅读有关参数化方法显式类型参数规范的更多信息。

于 2013-06-04T10:18:13.163 回答
4

采用

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

强制泛型类型。

或者,让编译器推断它:

Optional<String> o = Optional.absent();
result.add(o);
于 2013-06-04T10:18:32.133 回答
3

尝试:

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

缺席()方法是参数化的。

于 2013-06-04T10:18:21.507 回答