Sono nuovo di programmazione funzionale in Java, e mi chiedo come dovrei codice per evitare NPE a (per esempio) questa operazione:.flusso Calling() ridurre() su una lista con un solo elemento
myList.stream()
.reduce((prev, curr) -> prev.getTimestamp().isAfter(curr.getTimestamp()) ? prev : curr);
.get().getTimestamp();
Il mio intento qui è quello di trovare il timestamp del nuovo oggetto nella lista. I suggerimenti su come raccogliere meglio l'ultimo elemento sono i benvenuti, ma la mia domanda principale qui è in realtà perché funziona.
La documentazione dice che la funzione getta una NullPointerException
"se il risultato della riduzione è nullo":
che è ok, ma quello che non capisco è il motivo per I don' t ottenere NullPointerException
quando questo codice viene eseguito con un elenco contenente solo un elemento. Mi aspettavo che lo prev
fosse nullo in tal caso. Ho provato il debug, ma sembra proprio scavalcare l'intera espressione lambda quando c'è un solo elemento.
Si noti che questo restituirà solo il timestamp più recente e non l'oggetto con il timestamp più recente. – skiwi
Grazie, ne sono consapevole e il timestamp è quello che voglio. – aweibell