# java8 findAny()、findFirst()空指針NullPointerException問題 ###### tags: `Java` `Java8` `NullPointerException` 今天從DB撈值自動映射給物件時,產生了NullPointerException的報錯。 原本的程式碼 : ```java= List<ReturnDto> returnData = returnsDao.getReturnCost(id(), termNo); Long returnTotal = returnsDao.stream().map(data -> data.getReturnTotal()).findFirst().orElse(0L); ``` 但是因為`returnData`撈出的值有可能為空,就會導致我的下一行`returnTotal`的findFirst會因為空值報錯。 改進寫法為下,先將資料篩選掉。 --- 參考資訊:![](https://i.imgur.com/lU8CyaO.png) --- 將篩選出來的值先將null排除,會返回空的Optional物件,而findFirst因為找不到資料,就會觸發Else的預設值。 ```java= Long returnTotal = returnsDao.stream().map(data -> data.getReturnTotal()).filter(Objects::nonNull).findFirst().orElse(0L); ```