Do a little test.
final Connection someConnection = <initialize connection here>; someConnection = null;
That second line will error out - you can't make someConnection null anymore. Why not?
The answer to that question should give a hint as to why Java DEMANDS that variable to be final if you are going to use it in an inner class. Or shall I explain that differently: when you are going to be using the variable in another class.
EDIT: I did it again, I wanted to reply to the original thread.