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);
谢谢大家。将第一个答案标记为正确,并对其他答案进行了投票。