This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
Tamkin can you be more specific what you were unable to understand here.
As far as I know, people get confused how can you access DOG or FISH on a null reference.
If that's your doubt, then you can access DOG and FISH on reference a as DOG and FISH are static final fields of the enum. And you can access static members on a null reference. You must read a little bit about enums to understand how they are converted to normal classes after compilation...