- Il main() è abbastanza lungo e fa troppe cose ... c'è tutto un mix di gestione interfaccia utente, lettura dati, scrittura dati ecc... Evita questi design.
- La gestione delle eccezioni non è delle migliori ....
- Non chiudi correttamente tutti gli stream, ad esempio l'ObjectOutputStream non lo chiudi (e quindi questo può già dare problemi).
- I costruttori di Book si possono migliorare, uno dei due può essere espresso come invocazione dell'altro.
- Il problema del NullPointerException:
ListNode bookListProva = null; <----- e non viene istanziato un ListNode

Rispondi quotando