当前位置: 首页 > 知识库问答 >
问题:

为什么不Optional.empty(). orElse("test")工作?[复制]

长孙景天
2023-03-14

我在试验时尝试了这一行:

String test = Optional.empty().orElse("test");

--令我惊讶的是,它给出了一个类型错误:不兼容的类型:对象无法转换为字符串

为什么?看看源代码,如果可选项是空的,那么orElse应该只返回传入的内容,它就在这里。那么我错过了什么?另一方面,这很好:

String test = Optional.of("me").orElse("test");

共有2个答案

卢黎明
2023-03-14

可选。empty()返回一个可选值

如果要创建空的可选

String test = Optional.<String> empty().orElse("Test");

或者,如果您想要自动打字,您可以分两个步骤完成:

Optional<String> opt = Optional.empty();
String test = opt.orElse("test");

佟云
2023-03-14

这是一个与泛型有关的问题。如果查看empty()静态方法,它是一个泛型方法,并且有一个类型变量。如果你只是调用可选。空则类型变量T被视为对象,并且存在不兼容的类型。可选类型为可选

String test = Optional.<String> empty().orElse("test");

但是,如果您的目标类型是对象,那么它将起作用,因为字符串对象的某个子类型,如下所示。

Object test = Optional.empty().orElse("test");

 类似资料:
  • 我今天想使用,但出现了如下错误: 所以我想我应该清除并重新安装(如下所示)https://www.rosehosting.com/blog/how-to-install-pip-on-ubuntu-16-04/)但仍然得到: 我怎样才能提高我的水平

  • gameStart是一个全局变量,初始值为false。通常,当我点击左、右、上或下按钮时,gameStart变量设置为true,但if(gameStart)不起作用。但是当我用注释的块减慢速度时,if(gameStart)运行正常。为什么会发生这种情况?

  • 当我调用下面的代码时,我总是得到 用户的值。Id和密码有效。结果错误总是说“无效令牌”,我没有尽可能地看到它,因为我得到它并立即检查它和它的错误。这只是一个理智测试——我通常通过电子邮件向用户发送令牌,但这也不起作用。 UPDATE 1我在同一个控制器中定义UserManager,如下所示: UPDATE 2这是我的Application ationUserManager代码:

  • 我只是按照spring的指示将响应发送回特定用户,而不是广播消息。但最终,无法发送回响应消息。 这是我的js代码: 这是控制器: 这是Spring配置: 请帮忙。谢谢提前。 我已经尝试使用@SendToUser,@SendToUser(/队列/resp)和SimpMessagingTem板以及,完全不能响应消息到浏览器。

  • 如果我在浏览器控制台输入这个表达式(带有严重的口音): 它将返回: 但是如果我输入这个表达式(带单引号): Math.sin'1' 它将返回错误: 你能解释一下为什么会这样吗?

  • 使用scandir()函数时,我收到以下php警告: Scandir无法打开目录:公共html/page2中不允许操作。php在线3 第2页。php 我想使用这个功能来打印我的根文件夹的文件和子目录,但它不工作。 有人知道怎么修吗?