This question already has answers here:
How to properly compare two Integers in Java?
(10个回答)
2年前关闭。
当我叫它:
我收到异常,但rezInfo.getOsobaId()== 81504(我在调试器中看到它)
当我删除此行时:
函数返回对象RezerwacjaInfoDTO。
这条线怎么了?
(10个回答)
2年前关闭。
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)
我收到异常,但rezInfo.getOsobaId()== 81504(我在调试器中看到它)
当我删除此行时:
.filter(rez -> rez.getOsobaId() == osobaId)
函数返回对象RezerwacjaInfoDTO。
这条线怎么了?
最佳答案
如果变量rezInfo为null,则可选的throws异常也rezInfo.getOsobaId()== osobaId为true,则发生异常。
删除过滤器时,它不会引发异常,因为您的rezInfo不为null。
可能的另一种选择是处理调用方方法中的可选方法。
Optional<RezerwacjaInfoDTO> getRezerwacjaInfo(int rezerwacjaId) {
Integer osobaId = Math.abs(loginMgr.getLoggedUserInfo().getUserId());
RezerwacjaInfoDTO rezInfo = rezMgr.getRezerwacjaInfo(rezerwacjaId);
return Optional
.ofNullable(rezInfo);
}
void callerMethod() throws Exception {
getRezerwacjaInfo(...)
.filter(rez -> rez.getOsobaId() == osobaId)
.orElseThrow(() -> new Exception("Brak rezerwacji o podanym numerze"));
}
10-08 14:57