为了账号安全,请及时绑定邮箱和手机立即绑定

使用带有 groovy 对方付费电话的 FindAll 机箱时出现问题

使用带有 groovy 对方付费电话的 FindAll 机箱时出现问题

慕少森 2022-07-20 20:54:55
时髦的问题。我有以下测试示例。我需要搜索一个集合并在 date1 的同一天收集所有事件。我在对方付费电话的末尾添加了一个 findAll 附件,因为我无法在集合中检查同一天。我看到错误“无法从空列表访问 last() 元素”检查 .last() 方法是否列表为空,即使在条件检查中使用 ?.last() 也是如此。如果我从对方付费电话中删除 findAll,它会正常工作,我不明白为什么。如果不在列表中,我总是使用 collect 调用创建一个新实例,而不是最后使用 findAll 附件进行此条件检查。为什么这会有所作为?Date date1 = new Date();List<Event> lEvents = test.collect("events").findAll{ d ->                         DateUtils.isSameDay(d.testdate, d1);                      }Event newEvent = lEvents?.last() ?: new Event();
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

错误消息是说列表是空的,而不是空的,所以?in?.last()没有任何区别。出于显而易见的原因,在尝试检索空列表的最后一个元素时,总是会抛出“空列表”异常。您findAll正在过滤掉所有内容并返回一个空列表,这会触发错误。

你说你总是以这种方式测试一个空列表,所以不清楚你的其他代码如何能够last()在不抛出的情况下调用一个空列表。你肯定有collect()返回空列表的情况吗?

要解决此特定情况,您可以执行以下操作:

Event newEvent = (lEvents.size() > 0) ? lEvents.last() : new Event()


查看完整回答
反对 回复 2022-07-20
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信