A solução sugerida para a classe AlteraEmpresa contém uma alteração dos atributos da empresa, componente da classe Banco, diretamente pela classe AlteraEmpresa:
// código omitido Banco banco = new Banco(); Empresa empresa = banco.buscaEmpresaPelaId(id); empresa.setNome(nomeEmpresa); empresa.setDataAbertura(dataAbertura); return "redirect:entrada?acao=ListaEmpresas"; //código omitido
Pensei em uma alternativa que preservasse o encapsulamento da classe Banco, criando ali um método alteraEmpresa :
/código omitido
public void alteraEmpresa(Integer idEmpresa, String nomeEmpresa, Date dataEmpresa) { for (Empresa emp : empresas) { if(emp.getId() == idEmpresa) { emp.setNome(nomeEmpresa); emp.setDataDeAbertura(dataEmpresa); } } }
//código omitido
E na classe AlteraEmpresa:
//código omitido
Banco banco = new Banco();
banco.alteraEmpresa(idEmpresa, nomeEmpresa, dataEmpresa);
return "redirect:entrada?acao=ListaEmpresas";
//código omitido
Mas a solução proposta funciona , apesar do atributo "List empresas" na classe Banco ser "private", além de "static". Como funciona isto?