Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida no retorno de Contas no console

Porque quando eu uso esse código:


package collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Principal2 {

    public static void main(String[] args) {

        List<ContaPoupanca> contas = new ArrayList<ContaPoupanca>();


        ContaPoupanca c1 = new ContaPoupanca("caio",500);
        c1.deposita(2059.99);
        contas.add(c1);

        ContaPoupanca c2 = new ContaPoupanca("luzia",495);

        c1.deposita(1070.00);
        contas.add(c2);

        ContaPoupanca c3 = new ContaPoupanca("guilherme",302);
        c3.deposita(2500.50);
        contas.add(c3);

        Collections.sort(contas);

        for(ContaPoupanca i : contas){
            System.out.println(i);
        }

    }    
    }

ele retorna isso: collections.ContaPoupanca@1db9742 collections.ContaPoupanca@106d69c collections.ContaPoupanca@52e922

Agora quando eu faço esse código:

package collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Principal {

    public static void main(String[] args) {
        List<ContaPoupanca> contas = new ArrayList<>();

        ContaPoupanca cp1 = new ContaPoupanca("fred", 456);
        cp1.deposita(100);

        ContaPoupanca cp2 = new ContaPoupanca("laura", 123);
        cp2.deposita(200);

        ContaPoupanca cp3 = new ContaPoupanca("adriana", 789);
        cp3.deposita(200);

        contas.add(cp1);
        contas.add(cp2);
        contas.add(cp3);

        Collections.sort(contas);

        for (ContaPoupanca conta : contas) {
            System.out.println(conta.getSaldo() +" "+ conta.getNome());
        }
    }
}

ele retorna isso: 199.9 laura 99.9 fred 199.9 adriana

o segundo eu sei que eu estou fazendo ele retrona os dados que eu informei mais porque o primeiro codigo mencionado retorna aquilo e não o que realmente está dentro da array cantas??????

2 respostas
solução!

Bom dia Guilherme,

Quando você imprime um objeto (como o Conta) e ele não possui uma forma de ser representado textualmente, por padrão o Java imprime isso que você vê (que é a identificação de qual classe aquele objeto representa e um hash de referência). Para que ao imprimir um objeto você tenha uma saída personalizada, a classe deve sobrescrever o método toString() de Object.

Por exemplo:

@Override
public String toString() {
    return "Conta do " + this.nome + " com saldo de " + this.saldo;
}

Abraços.

Valeu pelo esclarecimento Emerson Torres, eu estava com o mesmo problema.