如何在非通用上下文中使用Guava Optionals?

时间:2014-09-24 13:35:26

标签: java guava optional null-object-pattern

我尝试使用番石榴中的Null-Objects进行以下方法:

private void display(Optional<String> message) {
  ...
}

我调用方法display(..)的方法如下所示:

if(...) {
  display(Optional.of("hello");
} else {
  display(Optional.absent());
}

现在我收到以下编译错误:

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

我找到的唯一编译解决方法是使用

Optional.fromNullable((String) null)

而不是

Optional.absent()

如果我在非通用上下文中使用Optionals,是否真的没有其他可能性?

2 个答案:

答案 0 :(得分:3)

你可以这样做:

display(Optional.<String> absent());

答案 1 :(得分:0)

我认为您尝试将无效参数传递给方法。你必须将它包装在方法中。它将解决问题。

private void display(String message) {
 Optional<String> optionalMessage=Optional.fromNullable(message);
  ...
}