• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Local final variables and method local inner class

 
Jolly Tiwari
Ranch Hand
Posts: 77
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
HI! all,
i am stating a passage from inner classes in K&B book

"The local variables of the method live on the stack, and exist only for the lifetime of the method.
You already know that the scope of a local variable is limited to the method the variable is declared in. When the method ends, the stack frame is blown away and the variable is history.
But even after the method completes, the inner class object created within it might still be alive on the heap if, for example, a reference to it was passed into some other code and then stored in an instance variable. Because the local variables aren't guaranteed to be alive as long as the method-local inner class object, the inner class object can't use them. Unless the local variables are marked final!"

Can any body please tell me How method local final variables will be retained and accessed as according to me they also reside on the stack .still inner class access them and works correctly.

Regards

Jolly


[BPS: Removed shouting from the subject line]
[ May 21, 2008: Message edited by: Ben Souther ]
 
Ben Souther
Sheriff
Posts: 13411
Firefox Browser Redhat VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Jolly,
Typing with the caps-lock button down in a web forum is the same as shouting.
Please don't shout.

-Ben
 
Stevi Deter
Ranch Hand
Posts: 265
Hibernate Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Jolly,

To copy from an answer I gave to a similar question here:

The compiler gives the local class access to the variables by automatically creating a private instance field to hold a copy of the variable, as well as creating hidden parameters in the constructor to automatically initialize those private instances.

This can only work if the variables to be copied are final, so that the local class can be guaranteed that its local values are the same as the instantiating scope.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic