Java 如何在非通用环境下使用番石榴配餐?

Java 如何在非通用环境下使用番石榴配餐?,java,guava,optional,null-object-pattern,Java,Guava,Optional,Null Object Pattern,我试图通过以下方法使用guava中的Null对象: private void display(Optional<String> message) { ... } 现在我得到以下编译器错误: The method display(Optional<String>) in the type TokenServlet is not applicable for the arguments (Optional<Object>) 而不是 Optional.abs

我试图通过以下方法使用guava中的Null对象:

private void display(Optional<String> message) {
  ...
}
现在我得到以下编译器错误:

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

Optional.absent()

如果我在非泛型上下文中使用Optionals,真的没有其他可能性吗?

我想您应该尝试将unvalid参数传递给方法。你必须用方法来包装它。它将解决这个问题

private void display(String message) {
 Optional<String> optionalMessage=Optional.fromNullable(message);
  ...
}
private void显示(字符串消息){
可选optionalMessage=可选。fromNullable(消息);
...
}

我认为您试图将未验证的参数传递给方法。你必须用方法来包装它。它将解决这个问题

private void display(String message) {
 Optional<String> optionalMessage=Optional.fromNullable(message);
  ...
}
private void显示(字符串消息){
可选optionalMessage=可选。fromNullable(消息);
...
}

我认为您试图将未验证的参数传递给方法。你必须用方法来包装它。它将解决这个问题

private void display(String message) {
 Optional<String> optionalMessage=Optional.fromNullable(message);
  ...
}
private void显示(字符串消息){
可选optionalMessage=可选。fromNullable(消息);
...
}

我认为您试图将未验证的参数传递给方法。你必须用方法来包装它。它将解决这个问题

private void display(String message) {
 Optional<String> optionalMessage=Optional.fromNullable(message);
  ...
}
private void显示(字符串消息){
可选optionalMessage=可选。fromNullable(消息);
...
}
您可以执行以下操作:

display(Optional.<String> absent());
显示(可选。缺席());
您可以执行以下操作:

display(Optional.<String> absent());
显示(可选。缺席());
您可以执行以下操作:

display(Optional.<String> absent());
显示(可选。缺席());
您可以执行以下操作:

display(Optional.<String> absent());
显示(可选。缺席());

不需要任何方法。但是它有帮助,因为使用局部变量可以让Java推断出正确的泛型类型,不需要任何方法。但是它有帮助,因为使用局部变量可以让Java推断出正确的泛型类型,不需要任何方法。但是它有帮助,因为使用局部变量可以让Java推断出正确的泛型类型,不需要任何方法。但它有帮助,因为使用局部变量允许Java推断正确的泛型类型。请注意,Java 8应该在那里进行适当的类型推断。请注意,Java 8应该在那里进行适当的类型推断。请注意,Java 8应该在那里进行适当的类型推断。请注意,Java 8应该在那里进行适当的类型推断。