java可选接口问题
RezerwacjaInfoDTO getRezerwacjaInfo(int rezerwacjaId) throws Exception {
Integer osobaId = Math.abs(loginMgr.getLoggedUserInfo().getUserId());
RezerwacjaInfoDTO rezInfo = rezMgr.getRezerwacjaInfo(rezerwacjaId);
return Optional
.ofNullable(rezInfo)
.filter(rez -> rez.getOsobaId() == osobaId)
.orElseThrow(() -> new Exception("Brak rezerwacji o podanym numerze"));
}
当我称之为:
getRezerwacjaInfo(81504)
我有例外,但雷津福。getOsobaId()==81504(我在调试器中看到)
当我删除这行时:
.filter(rez -> rez.getOsobaId() == osobaId)
函数返回对象RezerwacjaInfoDTO
这条线是什么意思
# 1 楼答案
如果变量rezInfo为null,那么可选的异常也会引发rezInfo。getOsobaId()==osobaId为真,则发生异常
当你移除过滤器时,它不会抛出异常,因为你的rezInfo不是空的
另一种选择可能是在调用者方法中处理可选