[Ajuda] Redefinir o metodo toString

Bom dia pessoal, eu estou com uma pequena duvida e gostaria da ajuda de vcs. tenho a minha classe Pessoa e no main um arraylist para guardar objetos do tipo Pessoa. Segue o codigo:

public class Pessoa {

    private String nome;
    private int idade;

    public Pessoa(String nome, int idade) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }

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

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }
    

    @Override
    public String toString() {
        return String.valueOf(this.idade);
    }


    public static void main(String[] args) {

        List<Pessoa> lista = new ArrayList<Pessoa>();

        Pessoa t1 = new Pessoa("nome1", 10);
        Pessoa t2 = new Pessoa("nome2", 20);
        Pessoa t3 = new Pessoa("nome3", 30);

        lista.add(t1);
        lista.add(t2);
        lista.add(t3);

        System.out.println(lista);// nao imprimi o valor das idades corretamente.
    }

}

A minha duvida eh q eu nao consigo mostrar somente as idades das pessoas redefinindo o metodo toString, consigo com sucesso mostrar os nomes mas nao as idades pelo fato de ser int.

Agradeço a todos que puderem me ajudar!!

dica: construtor.

quando vc diz q a dica ta no construtor, seria colocar Integer ao inves de int? Pq mesmo se for desse jeito eu gostaria da ajuda em relaçao a usar int mesmo.

valeuuu!!!

quando vc diz q a dica ta no construtor, seria colocar Integer ao inves de int? Pq mesmo se for desse jeito eu gostaria da ajuda em relaçao a usar int mesmo.

valeuuu!!![/quote]

Quando ele disse o contrutor, e porque você não está passando o valor do parametro para o atributo da classe:

public Pessoa(String nome, int idade) {   
        this.nome = nome;   
        //Cade o this.idade = idade ?
}   

[]'s
JL

jah tentou

tenta fazer um metodo q pegue soh a idade do usuario e depois

 System.out.println(lista.nomeDoMetodo())

Mero_Aprendiz, realmente foi isso mesmo esqueeci de colocar a idade no construtor. Ajeitei isso e ajeitei o metodo, e consegui resolver o problema.

 public Pessoa(String nome, int idade) {
        this.nome = nome;
        this.idade = idade;
 }
      ........

 @Override
    public String toString() {
        return String.valueOf(idade);
    }

Agradeço mais uma vez a ajuda de todos vcs!!

amigo, sem querer fazer um overhead no topico, é interessante vc colocar mais informações sobre seu objeto no metodo to string, para poder identificar cada instancia por exemplo.

segundo o livro effective java

[quote]When practical, the toString method should return all of the interesting
information contained in the object…[/quote]

no seu caso vc pode imprimir o nome a idade, assim vc sabe a qual a idade pertence.

abrassssss

[quote=renanreismartins]amigo, sem querer fazer um overhead no topico, é interessante vc colocar mais informações sobre seu objeto no metodo to string, para poder identificar cada instancia por exemplo.

segundo o livro effective java

[quote]When practical, the toString method should return all of the interesting
information contained in the object…[/quote]

no seu caso vc pode imprimir o nome a idade, assim vc sabe a qual a idade pertence.

abrassssss[/quote]

Joshua tem toda a razão.
E para facilitar, tem um Builder na apache.commons.lang que facilita o trabalho:

    @Override
    public String toString() {
        return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE, true);
    }

Lembrando que ToStringStyle tem muitos estilos, a gosto do cliente. :wink:

[]'s
JL

Mero_Aprendiz quem é Joshua ?

abrasssss

[quote=renanreismartins]Mero_Aprendiz quem é Joshua ?
abrasssss[/quote]

:shock:
É um cara fraquinho, que é só engenheiro da Google, criou a Collection do Java, e escreveu o Java Effective (ou Java Efetivo).

Joshua Bloch.

[]'s
JL