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

Como printou um texto chamando a referência do objeto?

Boa tarde pessoal.

Nos cursos que assisti não me lembro de passar por essa parte, não consegui encontrar e também não achei o código fonte do curso para download aqui no Alura no final do curso. Como que quando o professor chama para imprimir (System.out.println(c)) é impresso a frase "Com conta saldo ...)" em vez do local para onde a referência está apontando? Como faço isso?

Quando imprimo algum objeto do tipo Conta que está guardado no ArrayList é impresso o local para onde a referência aponta: br.com.alura.banco.conta.ContaCorrente@70dea4e br.com.alura.banco.conta.ContaCorrente@5c647e05

No vídeo, a saída do código abaixo é: Conta com saldo 500.00 Conta com saldo 700.00

        ContaCorrente cc1 = new ContaCorrente(500.0);
        ContaCorrente cc2 = new ContaCorrente(700.0);

        ArrayList<Conta> conta = new ArrayList<Conta>();
        conta.add(cc1);
        conta.add(cc2);

        for (Conta c : conta) {
            System.out.println(c);
        }

Obrigado.

4 respostas

for (Conta c : conta) { System.out.println(c.getAtributoQueQuerPrintar); }

Lembre-se que "c" é um objeto do ArrayList, sendo que "c" possui todos os atributos e métodos de Conta, logo, você tem que especificar o que você quer printar, já que ele possui diferentes tipos de informações.

Obrigado Gabriel, mas minha dúvida é justamente porque ele não passou chamando nenhum método, como (c.getSaldo()), apenas o objeto Conta que está dentro do Array List:

 for (Conta c : conta) {
            System.out.println(c);
        }

Vídeo 05m12 https://cursos.alura.com.br/course/java-e-bibliotecas/task/2821

Opa.

Fazendo um exercício sobre imprimir a referência de uma lista e verificando se o toString foi reescrito(https://cursos.alura.com.br/course/java-e-bibliotecas/task/36547) acabei tendo uma ideia e reescrevi o método toString na classe ContaCorrente.

Dessa forma consigo retornar por exemplo um texto quando imprimo a referência.

Classe ContaCorrente:

@Override
    public String toString() {
        return "oi";
    }

Main:

...
contas.add(cc1);
contas.add(cc2);
...
System.out.println(contas);
System.out.println(cc1);

Saída: [oi, oi]

oi

Obrigado.

solução!

Melhorando o código e imprimindo realmente o que quero:

Classe ContaCorrente:

@Override
    public String toString() {
        return "Saldo da conta: " + this.getSaldo();
    }