Simone Bordet [email protected] [it-torino-java-jug] ha scritto il 
30/11/18 alle 13:29:
> Ciao,
> 
> 
> On Fri, Nov 30, 2018 at 1:24 PM Federico Fissore [email protected]
> [it-torino-java-jug] <[email protected]> wrote:
>>
>>
>>
>> Molto figo, ma attenzione ai memory leak
>>
>> Una Inner class tiene in automatico un riferimento alla classe che l'ha
>> creata.
> 
> Non mi risulta. Hai dei links?


Java Language Specification
https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.3
l'ultimo esempio

 > Here, every instance of WithDeepNesting.Nested.DeeplyNested has an
 > enclosing instance of class WithDeepNesting.Nested (its immediately
 > enclosing instance) and an enclosing instance of class WithDeepNesting
 > (its 2nd lexically enclosing instance).
> 

>> Tutto ok finchè il ciclo di vita della "tupla" è uguale o simile
>> a quello di quella classe; altrimenti è un memory leak da tenere sotto
>> controllo
> 
> Non credo, se no tutti gli usi di anonymous inner classes sarebbero
> "pericolosi".

Normalmente le inner class sono usate per "customizzare" il 
comportamento di qualche classe (ad esempio cosa fare quando un buttone 
di swing viene premuto), quindi il loro ciclo di vita non è più lungo 
delle classi dove vengono istanziate, e quindi il problema non si pone.

Ma se cominci a usarle per i dati, allora è facile che sopravvivano alla 
classe che le ha create

federico

Reply via email to