未为类型Optional

时间:2019-05-24 09:52:55

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

我有一个spring项目,其中有一个boolean方法,该方法使用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<Request>未定义

我正在使用此版本的Java

  

java.version = 1.8.0_73

1 个答案:

答案 0 :(得分:3)

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

return !request.isPresent();