1
resposta

Retorno do endereço de memoria

Pessoal uma ajuda!

Quando rodo esse teste utilizando o for ou usando o get para o objeto lista, o retorno e o endereço de memoria.

Alguém saberia dizer qual e o erro?

public class TesteArrayListEquals {

    public static void main(String[] args) {
        //<tipo> generics
        //esse array list so guardar o objetos do tipo <Conta>
        ArrayList<Conta>lista = new ArrayList<Conta>();

        Conta cc = new ContaCorrente(222,333);
        lista.add(cc);

        //retorna o endereço de memoria 
        System.out.println(lista.get(0));

        //para cada elemento do tipo o, imprime a lista de elementos
        for(Conta conta : lista) {

                //retorna o endereço de memoria 
            System.out.println(conta);
        }

    }

}
1 resposta

Bom dia Raphael,

Não é um erro, acontece que quando você faz um:

System.out.println(lista.get(0));
//ou
System.out.println(conta);

O compilador transforma essa variavel em String através do método .toString(), e como o método está no seu desenvolvimento padrão ele retorna a referência da variavel.

Para resolver essa questão, você precisa sobreescrever o método .toString() na classe Conta por exemplo.

Algo mais ou menos assim:

public class Conta {
    private int agencia;
    private int conta;

    public Conta(int agencia, int conta){
        this.agencia = agencia;
        this.conta = conta;
    }

    //Getters and Setters

    @Override
    public String toString(){
        return "Número da agência: " + this.agencia + " | Número da conta: " + this.conta;
    }
}