The reason for that is the life span of the objects. The local variables of the method are no longer available after the method finishes but for final variables compiler can generate the necessary code. The local class may exist a lot longer then the local method that's why the local class can't access the automatic variables. Hope this helps.
subject: why only final variables can be accesed by local class