【问题标题】:The method isEmpty() is undefined for the type Optional方法 isEmpty() 未定义 Optional 类型
【发布时间】:2019-05-24 09:52:54
【问题描述】:

我有一个 spring 项目,其中我有一个布尔方法,它使用 optional 来过滤一组请求。当我尝试返回 request.isEmpty() 时出现错误,我查了一下,我可能使用的是旧版本的 java,但是有没有其他方法可以说 request.isEmpty() 而不必更新我的 java 版本,因为我担心如果我更新它,它会影响我的项目的其余部分

这是我的方法代码

private boolean hasNoDaysOffOnShiftDate(List<Request> requests, ShiftParams params) {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // for string
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // for localdate

    // Shift start date in LocalDate
    String shiftDate = (params.start).format(formatter);
    LocalDate formatDateTime = LocalDate.parse(shiftDate, formatter);
    System.out.println("Shift date in date format " + formatDateTime);

    Optional<Request> request = requests.stream().filter(req -> req.getStatus() == Status.Accepted)
            .filter(req -> isDayOffOnShiftDate(req, formatDateTime)).findAny();
    return request.isEmpty();

}

我得到的错误是

isEmpty() 类型的方法 Optional&lt;Request&gt; 未定义

我正在使用这个版本的java

java.version=1.8.0_73

【问题讨论】:

  • 有趣的是您使用SimpleDateFormat,但同时使用Optional - 这意味着java-8...
  • @JaneRyan Optional 不是列表,也不是请求。首先在可选项上执行 .get(),然后 .isEmpty()
  • 与您的问题无关,但您的 Java 8 版本相当旧。将 Java 8 更新 73 与当前最新的 Java 8 更新 212 进行比较。

标签: java spring-mvc java-8 java-11


【解决方案1】:

Optional#isEmpty() 是 Java 11 方法,是 Java 8 的 !Optional#isPresent() 的快捷方式。

return !request.isPresent();

【讨论】:

  • 我在春季启动时收到编译时错误“找不到符号 isEmpty()”。该解决方案修复了它。我有 java 8
  • 节省了我的时间。谢谢!
猜你喜欢
  • 2014-11-07
  • 1970-01-01
  • 2022-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 2016-06-07
  • 2021-06-19
相关资源
最近更新 更多