Travar lista

4 respostas
vinicius_roc

Boa tarde pessoal.

Eu to com um problema que não como fazer.

Eu tenho uma classe que possui uma lista de emails, porem eu quero impedir que adicionem algum valor. sem ser pelo metodo addDestinatario, pois antes de adicionar preciso validar se o email é valido. É possivel isso? existe alguma solução?

Por enquanto esta assim:

private List<String> destinatarios;
	
	//não posso permitir que adicionem por aqui
	public List<String> getDestinatarios() {
		return destinatarios;
	}
	
        //aqui devera ser o unico meio de se adiconar um valor
	public void addDestinatario(String destinatario) {
		if(ValidadorUtil.validaEmail(destinatario)){
			throw new IllegalArgumentException("Email inválido");
		}
		this.getDestinatarios().add(destinatario);
	}

Valew pela ajuda pessoal

4 Respostas

G

faz uma classe delegate =) que ja vai funcionar isso

Mikhas
public List<String> getDestinatarios() {  
        return Collections.unmodifiableList(destinatarios);  
}
ViniGodoy

A solução do Mikhas é o ideal na maior parte dos casos.
Outra possibilidade é retornar uma cópia da lista:

public List&lt;String&gt; getDestinatarios() { return new ArrayList&lt;String&gt;(destinatarios); }

Essa alternativa é útil se vc precisar fazer algum tipo de manipulação da lista fora do método.
Ainda que não faça dentro da classe.

vinicius_roc

Não sabia desse esquema: Collections.unmodifiableList(lista);

Muito interessante.

Hoje a noite testarei. =D

Valew!!

Criado 24 de agosto de 2010
Ultima resposta 24 de ago. de 2010
Respostas 4
Participantes 4