Olá!
Ontem desenvolvendo um projeto, no qual estava utilizando o padrão observer ocorreu um fato estranho, bom vamos aos fatos
no projeto tem as class
:arrow: AgendaController que é o Source
:arrow: AgendaListener que é a interface listener
:arrow: AgendaEvent que é o objeto Evento
:arrow: AgendaTableModel que implementa o AgendaListener
acontece que ao adicionar o AgendaTableModel nos interessados das mudanças do AgendaController ele adicionava normalmente (verificado imprimindo a quantidade de elementos do Set após adicionar) mas na hora de notificar os interessados o elemento não estava mais no Set (verificado imprimindo a quantidade de elementos do Set), realmente isso é muito estranho e não sei porque isso acontece, mas sei que foi resolvido de uma maneira muito simples, passei a guardar a referencia de AgendaTableModel em uma variável global em vez de instanciar diretamente no parâmetro do construtor do JTable.
Acredito que o que estava acontecendo é que por não estar guardando uma referencia do AgendaTableModel o GarbageCollector acabava excluindo-o, mas por outro lado acredito que esse não seja o motivo pois tanto o Set, quanto o JTable estavam guardando uma referencia do AgendaTableModel.
Bom o fato é que eu não sei o motivo disso ter acontecido e que por sorte acabei resolvendo, mas gostaria de saber exatamente o porque isso aconteceu, para evitar problemas semelhantes no futuro.
Alguém saberia explicar??
Até!
[ops] relendo acabei percebendo que ficou longo demais agradeço por ter lido até aqui!!