Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 向Guava中的集合中添加可选的.缺席()元素_Java_Guava - Fatal编程技术网

Java 向Guava中的集合中添加可选的.缺席()元素

Java 向Guava中的集合中添加可选的.缺席()元素,java,guava,Java,Guava,我在这里找不到诀窍:我想要一个函数返回可选对象的列表,以表示我的列表确实包含这么多元素,但其中一些元素无效 public Optional<String> getMyObjects() { List<Optional<String>> result = Lists.newArrayListWithCapacity(2); result.add(Optional.of("This value is valid")); result.add(Opti

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

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;
}
public可选getMyObjects(){
列表结果=Lists.newArrayListWithCapacity(2);
结果.add(可选.of(“此值有效”));
result.add(可选.缺席());//编译器错误
返回结果;
}
这不会编译:

The method add(Optional<String>) in the type List<Optional<String>> is not 
applicable for the arguments (Optional<Object>)
类型列表中的方法add(可选)不可用
适用于参数(可选)
你怎么说?我尝试过铸造,但没有成功

尝试:

result.add(Optional.<String>absent());
result.add(Optional.<String> absent());
result.add(可选.缺席());
阅读更多精彩但非官方的Java泛型常见问题解答。

尝试:

result.add(Optional.<String>absent());
result.add(Optional.<String> absent());
result.add(可选.缺席());
该方法已参数化。

使用

result.add(Optional.<String>absent())
result.add(可选.缺席())
强制使用泛型类型

或者,让编译器推断:

Optional<String> o = Optional.absent();
result.add(o);
Optional o=Optional.缺席();
结果.加入(o);

谢谢大家。将第一个答案标记为正确,并对其他答案进行了投票。