1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema de um atributo do tipo List<> que nao pode ser alterado em determinado contexto

Bom dia pessoal, hoje me deparei com um problema que até então ninca tinha percebido, e resolvi compartilhar. Vamos ao contexto do problema.

Tenho uma classe de estatistica

class Estatistica {
    private int contError;
    private int contSuccess;
    private List<Tipo> tipos;

    // get's and set's
    // hashcode and equals
}

enum Tipo {
    ERROR, SUCCESS;
}

Entao essa classe serve apenas pra manter uma simples estatistica de logs de de tipo de avisos (erro ou sucesso). Dai eu pensei em criar um método nessa classe de Estatistica add(TipoErro tipo). Ficaria assim ao executa-lo por exemplo

public void add(Tipo tipo) {
    // logica para contagem dos tipos 
}

Ate ai tudo simples, contudo, quando eu por exemplo, for usar essa classe em uma outra camada da aplicacao eu poderia fazer simplesmente isso

// instancia de estatistica ja com valores
Estatistica e = servico.getEstatistica();

// Aqui esta o problema, pois eu posso adicionar um 'Tipo' na lista 
// sem utilizar o metodo Estatistica.add(Tipo tipo)

/*1*/ e.getTipos().add(Tipo.ERROR);

Entao pessoal, nao sei se voces me entenderam, mas seu eu utilizar o metodo add da interface List<> eu quebro a minha logica de negocio. So uma observação, eu nao posso remover o metodo getTipos()

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags algoritmos design-patterns estrutura-de-dados java ou faça a sua própria pergunta.