Effective Java - Bloch, Joshua (The Java series, 2009)