This week's book giveaway is in the OCPJP forum. We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line! See this thread for details.
You would expect 'final' to prevent the value of a variable to change, but it just prevents it from changing to a new instance. If the value of the instance can be altered (ie it is not immutable) then the value returned by the final instance can change, even if the instance does not.