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

Erro na classe ContaPoupanca

Aparece este erro na minha IDE: The interface Comparable cannot be implemented more than once with different arguments: Comparable and Comparable

e no método compareTo pede para remover a annotation @Override.

Classe ContaPupanca

public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca> {    

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

Só lembrando que reaproveitei a classe Conta de outros cursos, el pode parecer meio torta rsrs, mas funciona... Classe Conta:


public class Conta implements Comparable<Conta>{

    private double saldo;
    private int agencia;
    protected int numero;
    private Cliente titular;
    private static int total = 0;

    public Conta(int agencia, int numero) {
        Conta.total++;
        System.out.println("O total de contas é " + Conta.total);
        this.agencia = agencia;
        this.numero = numero;
        this.saldo = 100;
        System.out.println("Estou criando uma conta " + this.numero);
    }

    public Conta() {
    }

    public Conta(double valor) {

        this.saldo += valor;
    }

    public void deposita(double valor) {
        this.saldo = this.saldo + valor;
    }

    public boolean saca(double valor) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            return true;
        } else {
            return false;
        }
    }

    public boolean transfere(double valor, Conta destino) {
        if (this.saca(valor)) {
            destino.deposita(valor);
            return true;
        } else {
            return false;
        }
    }

    public double getSaldo() {
        return this.saldo;
    }

    public int getNumero() {
        return this.numero;
    }

    public void setNumero(int numero) {
        if (numero <= 0) {
            System.out.println("Nao pode valor menor igual a 0");
            return;
        }
        this.numero = numero;
    }

    public int getAgencia() {
        return this.agencia;
    }

    public void setAgencia(int agencia) {
        if (agencia <= 0) {
            System.out.println("Nao pode valor menor igual a 0");
            return;
        }
        this.agencia = agencia;
    }

    public void setTitular(Cliente titular) {
        this.titular = titular;
    }

    public Cliente getTitular() {
        return this.titular;
    }

    public static int getTotal() {
        return Conta.total;
    }

    @Override
    public String toString() {

        return "Conta com saldo " + this.saldo;
    }

    // @Override
    // public boolean equals(Object obj) {
    // Conta outra = (Conta) obj;
    // return this.numero == outra.numero && this.titular.equals(outra.titular);
    // }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        long temp;
        temp = Double.doubleToLongBits(saldo);
        result = prime * result + (int) (temp ^ (temp >>> 32));
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Conta other = (Conta) obj;
        if (Double.doubleToLongBits(saldo) != Double.doubleToLongBits(other.saldo))
            return false;
        return true;
    }

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


}
3 respostas
solução!

Boa noite, Renato! Como vai?

Como o erro está dizendo, vc não pode implementar a interface Comparable mais de uma vez com argumentos diferentes! Isso está acontecendo pq sua classe ContaPoupanca estende a classe Conta que já implementa a interface Comparable. Ou seja, por esse motivo, por baixo dos panos a classe ContaPoupanca tbm implementa Comparable.

Basta vc tirar a declaração da interface Comparable da classe ContaPoupanca!

Grande abraço e bons estudos!

Muito obrigado, é que no vídeo do curso acho que o instrutor não falou ou eu não percebi o momento exato que o mesmo citou essa peculiaridade na atividade. Muito obrigado Gabriel Leite!

Por nada, Renato!

Sempre que tiver qualquer dúvida é só recorrer ao pessoal aqui no fórum!

Grande abraço e bons estudos!