我有一个使用 Optional 的测试。在该方法中,它声明不存在任何值。这是代码,我有。我如何在没有 NoSuchElementException 的情况下通过此过程。
public jobs theID(Integer id) {
if( id == null) {
throw new IllegalArgumentException("Its missing.");
}
return jobTitleMapper.entityToModel(this.jobTitleRepository.findById(id).get());
}
它对 Java 8 中的 get() 很感兴趣。
从这个意义上讲,如何正确使用带有 isPresent 的 Optional?
测试是:
public void findIdTest() {
Jobs jt = this.Service.theID(Entities.thisID);
Assert.assertNotNull(jt);
Assert.assertEquals(Entities.thisID, .getId());
}
谢谢您的帮助。
原文由 starlord 发布,翻译遵循 CC BY-SA 4.0 许可协议
发生这种情况是因为 Optional 返回:
this.jobTitleRepository.findById(id)
可以返回一个empty
,所以如果你调用 get() 它会抛出一个java.util.NoSuchElementException
您可以使用以下内容修复此问题:
this.jobTitleRepository.findById(id).orElseGet(null)
或this.jobTitleRepository.findById(id).orElseGet(new Jobs())
或修复原始方法中的返回可选类型:
jobTitleRepository.findById(id)
你能把这个方法
jobTitleRepository.findById(id)
也贴在你的帖子上吗?