Quando si utilizza una classe interna anonima come PropertyChangeListener a quale punto del ciclo di vita dell'oggetto è raccolta la garbageella di classe? Dopo che la classe contenente (SettingsNode) è stata recuperata? Devo rimuovere esplicitamente PropertyChangeListener nel finalizzatore della classe contenente (SettingsNode)?Java - Ciclo di vita della classe interna anonima
public class SettingsNode extends AbstractNode
{
public SettingsNode(Project project, ProjectSettings projectSettings)
throws IntrospectionException
{
// use an anonymous inner class to listen for changes
projectSettings.addPropertyChangeListener(ProjectSettings.PROP_NAME,
new PropertyChangeListener()
{
@Override
public void propertyChange(PropertyChangeEvent evt)
{
// handle event
}
});
}
}
In base alle risposte fornite, un anonimo non sembra essere l'opzione migliore per questo caso d'uso. Ora sto pensando che un'istanza delle classi interne sia probabilmente un'opzione migliore, dal momento che posso tenere un riferimento e chiamare un metodo removePropertyListener in futuro. – javacavaj