Não consigo rodar o meu TestaOrdenacao. Aparece a seguinte mensagem de erro:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method sort(Comparator<? super ContaPoupanca>) in the type List<ContaPoupanca> is not applicable for the arguments (List<ContaPoupanca>)
at conta.programas.TestaOrdenacao.main(TestaOrdenacao.java:24)
Aqui está o código da minha classe TestaOrdenacao:
package conta.programas;
import java.util.ArrayList;
import java.util.List;
import conta.classes.ContaPoupanca;
public class TestaOrdenacao {
public static void main(String[] args) {
ContaPoupanca c1 = new ContaPoupanca();
ContaPoupanca c2 = new ContaPoupanca();
ContaPoupanca c3 = new ContaPoupanca();
c1.atualiza(200);
c2.atualiza(100);
c3.atualiza(300);
List<ContaPoupanca> contas = new ArrayList<ContaPoupanca>();
contas.add(c1);
contas.add(c2);
contas.add(c3);
System.out.println("Sem ordenar");
System.out.println(contas.get(0)+ " "+contas.get(1)+ " "+contas.get(2));
contas.sort(contas);
}
}
Da Classe ContaPoupanca:
package conta.classes;
public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca>{
@Override
public void atualiza(double taxa) {
this.saldo += taxa;
}
@Override
public int compareTo(ContaPoupanca outra) {
if (this.saldo<outra.saldo) return -1;
if (this.saldo>outra.saldo) return 1;
return 0;
}
}
E da classe Conta:
package conta.classes;
import conta.exception.ValorInvalidoException;
public abstract class Conta {
public double saldo = 0;
protected int numero;
private String nome;
public abstract void atualiza(double taxa);
public void saca(double taxa) {
if (saldo >= taxa) {
saldo -= taxa;
} else {
System.out.println("Saldo insuficiênte");
}
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public double getSaldo() {
return this.saldo;
}
public void deposita(double valor) throws ValorInvalidoException {
if (valor < 0) {
throw new ValorInvalidoException(valor);
} else {
this.saldo = +valor;
}
}
@Override
public String toString() {
return "O seu saldo é de: " + this.saldo;
}
@Override
public boolean equals(Object obj) {
Conta outra = (Conta) obj;
if (this.saldo == outra.saldo && this.nome == outra.nome) {
return true;
} else {
return false;
}
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}