我在这里找不到诀窍:我想要一个函数来返回一个可选对象列表,这意味着我的列表确实包含了这么多元素,但是其中一些元素无效。
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>)
你会怎么说?我尝试过铸造没有成功
答案 0 :(得分:7)
尝试:
result.add(Optional.<String>absent());
在非常正式的Java Generics常见问题解答中阅读更多about parametrized methods和explicit type argument specification。
答案 1 :(得分:4)
使用
result.add(Optional.<String>absent())
强制使用泛型类型。
或者,让编译器推断它:
Optional<String> o = Optional.absent();
result.add(o);
答案 2 :(得分:3)