java - Java中使用Optional类时,对象无法转换为字符串

标签 java option-type

我有以下代码尝试使用Optional类:

import java.util.Optional;

// one class needs to have a main() method
public class HelloWorld
{
  public String orelesMethod() {
    return "hello";
  }

  public void test() {
    String value;
    value = Optional.ofNullable(null).orElse(orelesMethod());
    System.out.println(value); 
  }

  // arguments are passed using the text field below this editor
  public static void main(String[] args)
  {
    HelloWorld hello = new HelloWorld();

    hello.test();
  }
}

编译时,它说:

incompatible types: Object cannot be converted to String
    value = Optional.ofNullable(null).orElse(orelesMethod());

我找不到问题所在,有人可以帮忙吗?

谢谢!

最佳答案

您已定义value类型为String ,但是Optional.ofNullable(null)返回Optional<Object>因为任何对象类型都可以是 null并且您没有指定实际类型。那么您调用orElseOptional<Object> 类型的对象上因为 TObjectorElse方法返回 Object 类型的对象无法转换为String .

因此调用 ofNullable 时需要指定类型:

value = Optional.<String>ofNullable(null).orElse(orelesMethod());

您可能还想使用orElseGet方法以便不调用 orelesMethod当可选包含值时。

关于java - Java中使用Optional类时,对象无法转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51931835/

相关文章:

java - 用于 append 组合框的 ActionListener

java - Firestore 查询中函数调用的顺序重要吗?

java - 如何使用 UnboundID LDAP SDK 查找用户在 LDAP 中拥有的所有角色?

java - Month.AUGUST 中的 dayOfMonth(31)

swift - "if let"尽管值为 nil 仍执行语句

java - map() 方法的通配符泛型

java - 有没有一种优雅的方法来打开包裹在 2 个嵌套的 Optionals 中的对象?

java - 如何在多个类上 initElements ?

python - 如果值为 None,如何提供默认值?

swift - Parse 和 Swift 的可选类型