[RESOLVIDO] Ajuda com listas

11 respostas
A

Olá pessoal, minha lista de clientes esta ficando com valores errados…
Quando add meus dados a uma lista
esta aparecendo os valores como:

model.cliente@40f84b0

vejam como estou trabalhando:

private List<Cliente>  listaCliente = new ArrayList<Cliente>();


public void addList(){
		
		//instancia a classe
		cliente = new Cliente();
		//seta os valores la na classe
		
		cliente.setNome("Adam Sandler");
		 cliente.setIdade(19);
		 cliente.setCpf("101");
		
    //adiciona a lista
	listaCliente.add(cliente);

quando eu mando mostrar os valores direto da classe, mostra normal ou seja
sysout(cliente.getNome());
esta tudo ok, ou seja os valores estao setados corretamente., mas depois que add a lista, ele se transforma naqueles valores estranhos.
o que pode ser??
Obrigado a todos sempre!

11 Respostas

H

Opa, bom dia,

verifica se na hora de imprimir você na verdade esta imprimindo o objeto cliente, para imprimir da lista use

listaClientes<indice>.getNome();
severuspedreirus

faz um foreach para poder imprimir seu List

for(Cliente c : listaCliente){
System.out.println(c.getNome());
System.out.println(c.getIdade());
System.out.println(c.getCpf());
}
ViniGodoy

Ou implemente o método toString() da sua classe. É ele quem diz como a classe será impressa.

public class Cliente {

   @Override
   public String toString() {
        return getCpf() + " - " + getNome();
   }
}
A

eu usei :

for (Cliente c : listaCliente) {

System.out.println("Dado: " + c);

}

imprime os valores estranho,
se eu mandar imprimir c.getNome();

imprime corretamente.
o que faço para ajeitar isso?

ViniGodoy

Você faz o que eu falei para você fazer.

A

mas tem que chamar o metodo no construtor?

A

Deu certo, mas e a idade? nao apareceu

A

Inclui o getIdade() também

A
Ahh ja entendi, o metodo ja vai tudo string.

Uma duvida pq tive q usar sobreescrever metodo?

nunca precisei ultilizar ele na classe, pois se eu declaro algo como String nome;

ele num ja sabe que é string?

porque isso? ja trabalhei com projeto web, e nunca precisei usar sobreescrita desse toString();
ViniGodoy

O objeto que está na lista é do tipo Cliente e não do tipo String. Você está mandando imprimir o cliente inteiro, e não só o nome.

O método toString() é o responsável por dizer ao Java como diabos uma classe deve ser convertida para String. Por padrão ele põe o nome da classe@identificador - o que não é uma informação muito útil. Com a sobrecarga, você troca o padrão por uma forma mais interessante de representação do objeto, como o CPF e o nome.

A

Obrigado a todos que ajudaram, resolvido!

Criado 24 de junho de 2014
Ultima resposta 24 de jun. de 2014
Respostas 11
Participantes 5