Muito para Muitos: Métodos Add e Remove

Continuando a discussão do Muito para muitos:

Estou com a mesma dúvida do autor desse tópico, porém eu quero saber como ficará os métodos Add e Remove das classes pois estou aprendendo desse jeito na facul.

Exemplo:

package dominio;

import java.util.ArrayList;

public class Cliente {
private String rg, nome, telefone, endereco;
private ArrayList listaCompras;

public Cliente(String rg, String nome, String telefone, String endereco) {
	this.rg = rg;
	this.nome = nome;
	this.telefone = telefone;
	this.endereco = endereco;
	listaCompras = new ArrayList<Compra>();
}

public String getRg() {
	return rg;
}

public void setRg(String rg) {
	this.rg = rg;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getTelefone() {
	return telefone;
}

public void setTelefone(String telefone) {
	this.telefone = telefone;
}

public String getEndereco() {
	return endereco;
}

public void setEndereco(String endereco) {
	this.endereco = endereco;
}

public void addCompra(Compra novaCompra) {
	if (listaCompras.contains(novaCompra))
		return;
	else {
		listaCompras.add(novaCompra);
		novaCompra.setCliente(this); // **Como vai ficar essa parte no N para N?**
	}
}

public void removeCompra(Compra exCompra) {
	if (!listaCompras.contains(exCompra))
		return;
	else {
		listaCompras.remove(exCompra);
		exCompra.setCliente (null); // ** Como vai ficar essa parte no N para N?**
	}
}

}

Gostaria de saber como ficaria a parte aonde ele pede para o objeto antigo deixar de referenciar o this.

Adicionando o this à lista de clientes:

novaCompra.getClientes().add(this);

Parecido com a primeira, só que ao invés de adicionar, vai remover:

exCompra.getClientes().remove(this);

1 curtida

Obrigado, funcionou.