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...