Closures, too much or too little?

tronicek at fit.cvut.cz tronicek at fit.cvut.cz
Mon Nov 23 11:37:59 PST 2009


> So for me, a more practical variation of "auto-finalization" would be that
> the variable only 'becomes' final at the point in the code where the
> closure appears.

What you mean by "becoming final"? Do you propose to flush all the
(non-final) variables, which are used in the closure, to the shared memory
at the point where this closure is declared?

Z.
-- 
Zdenek Tronicek
FIT CTU in Prague
http://kenai.com/projects/refactoringng - refactoring tool for compiler guys


Mark Mahieu napsal(a):
> On 23 Nov 2009, at 16:18, Joshua Bloch wrote:
>
>> I'm still not convinced that it's a good idea to allow closure to
>> capture
>> shared local variables.  I do (still) like the idea of
>> "auto-finalization"
>> (i.e., it's OK for a closure or anonymous class instance creation
>> expression) to reference a local variable that's not explicitly labeled
>> final if DU/DA-style analysis shows it to be effectively final.  I
>> suspect
>> this is the sweet spot.
>>
>>             Josh
>
>
> A good proportion of the annoying cases I encounter with anonymous classes
> accessing local variables look like this:
>
> int total = 0;
> for (...) {
> 	total += something;
> }
> // done with updating total
>
> final int finalTotal = total; // annoying
> doSomething(new Whatever() {
> 	public void execute() {
> 		// read finalTotal
> 	}
> });
>
>
> So for me, a more practical variation of "auto-finalization" would be that
> the variable only 'becomes' final at the point in the code where the
> closure appears.  In the above example, I'd even consider it an
> improvement if I had to (and could) explicitly redeclare 'total' as final.
>
>
> The other thorny side to all this occurs when the closure actually does
> want to update the local variable, as you know.  If we don't go some way
> to making that less awkward, people will continue to use the same
> workarounds they always have, which also have their costs.
>
> Personally, I quite liked the way that public/@Shared called out the
> variables as deserving special attention.
>
>
> Regards,
>
> Mark
>
>
>
>
>




More information about the coin-dev mailing list