Ho un solo fagiolo molla simile di seguito:Gli oggetti di classe interna non statici vengono eliminati dopo che non vengono più referenziati?
public class MyServiceImpl {
private MyDAO myDAO;
public class MyInnerClass implements SomeInterface<MyInnerClass> {
@Override
public MyInnerClass loadFreshObject(final String key) {
return myDAO.load(key);
}
}
}
istanze di MyInnerClass
vengono creati in codice esterno del chicco molla ma nessun riferimento a quei casi vengono tenuti.
Presumendo che non ho alcun controllo sull'uso di queste classi interne pubbliche non statiche (so che idealmente queste sarebbero private e statiche per evitare di far trapelare il riferimento a "this"), le istanze create di "MyInnerClass" saranno raccolta dei rifiuti corretta?
Ho eseguito i miei test su questo superando lo finalize()
e sembra che le istanze siano state raccolte correttamente, stavo solo sperando in un chiarimento su questo.
Grazie
"* Un iteratore di una raccolta viene in genere implementato come una classe interna della raccolta. *" Mi ha aiutato a capire la relazione tra le vite delle classi interne ed esterne. –