方法isEmpty()对类型Optional未定义。

14

我有一个春季项目,其中我有一个布尔方法,该方法使用可选项来过滤一组请求。当我尝试返回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
有趣的是你使用了 SimpleDateFormat,但同时又用到了 Optional - 这意味着使用了 Java 8... - Eugene
@JaneRyan Optional不是List,也不是请求。首先在Optional上执行.get(),然后再执行.isEmpty()。 - Stultuske
1
与您的问题无关,但您的Java 8版本相当老旧。请将Java 8更新73与当前最新的Java 8更新212进行比较。 - Mark Rotteveel
1个回答

34

1
我在我的Spring Boot中遇到了编译时错误,错误信息为“找不到符号isEmpty()”。这个解决方案修复了它。我使用的是Java 8。 - Deep Roy
节省了我的时间。谢谢! - Dennis Kim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接