In the same series, there's also "A Little Java" by Matthias Felleisen, one of the creators of Racket (a popular Lisp).
https://mitpress.mit.edu/9780262561150/a-little-java-a-few-p...
https://mitpress.mit.edu/9780262561150/a-little-java-a-few-p...
I like the style of these books, and might read this one - I'm just worried that Java has changed quite a bit since then. Is it still, say, 90% OK?
The book itself takes you on a journey to reinvent the Visitor pattern, in a version of Java that predates generics. You can probably find a better explainer for the Visitor pattern in Java.