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

Duvida:

Boa tarde, quando o metodo compareTo() estava na ContaPoupanca o atributo de comparação era o valor do saldo, e ordenava do menor para o maior.

public int compareTo(ContaPoupanca outra) {
        if(this.saldo < outra.saldo) return -1;
        if(this.saldo > outra.saldo) return 1;
        return 0;

A duvida que me veio foi, mesmo tendo conseguido fazer tudo certinho, quando o compareTo() veio para Conta ele já passou a usar o numero, porém número não representa "nada" nada em minha classe, ou seja, não seto valores a numero, o metodo compareTo() em Conta é quem estava setando valores a numero?

public int compareTo(Conta outra) {
        return this.getNumero() - outra.getNumero();
    }
4 respostas

Opa, parece que não. Será que não estava sendo definido no construtor?

Creio que não.

solução!

cada classe implementa a interface a sua maneira. Você precisa implementar

Implements Comparable<Conta>

e sobre escrever o compareTo

Além disso

@Override
public int compareTo(ContaPoupanca outra) {
        if(this.saldo < outra.saldo) return -1;
        if(this.saldo > outra.saldo) return 1;
        return 0;

pode ser refatorado para

@Override
public int compareTo(ContaPoupanca outra) {
        return outra.saldo - this.saldo;
}

Obrigado Gustavo.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software