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

Erro de compilação. Não deixa ordenar

O compilador exibe: Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method sort(NumeroDaContaComparator) is undefined for the type ArrayList

at br.com.bytebank.banco.teste.util.Teste.main(Teste.java:32)
package br.com.bytebank.banco.teste.util;

import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;

import br.com.bytebank.banco.modelo.Conta;
import br.com.bytebank.banco.modelo.ContaCorrente;
import br.com.bytebank.banco.modelo.ContaPoupanca;

public class Teste {

    public static void main(String[] args) {
        Conta cc1 = new ContaCorrente(22, 33);
        cc1.deposita(333.0);
        Conta cc2 = new ContaPoupanca(22, 44);
        cc2.deposita(444.0);
        Conta cc3 = new ContaCorrente(22, 11);
        cc3.deposita(111.0);
        Conta cc4 = new ContaPoupanca(22, 22);
        cc4.deposita(222.0);


        List<Conta> lista = new ArrayList<>();
        lista.add(cc1);
        lista.add(cc2);
        lista.add(cc3);
        lista.add(cc4);

        NumeroDaContaComparator comparator = new NumeroDaContaComparator();

        lista.sort(comparator);

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

}


class NumeroDaContaComparator implements Comparator<Conta>{
    @Override
    public int compare(Conta c1, Conta c2) {
        return Integer.compare(c1.getNumero(), c2.getNumero());
    }
}


4 respostas
solução!

Boa noite, Micael! Como vai?

Me parece que seu código está correto! Só que o método sort() foi adicionado na interface List a partir do Java 8! Então o seu código não está funcionando pois a versão do JDK que vc está utilizando deve ser inferior à versão 8!

Para conferir se a minha intuição está correta, entre no terminal do seu sistema operacional e execute o comando java -version. Daí, copie e cole aqui o resultado, por favor, para eu dar uma olhada e tentar te ajudar!

Grande abraço e bons estudos, meu aluno!

Tudo bem sim, Aqui o que o terminal devolve:

openjdk 11.0.2 2019-01-15 OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3) OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)

Uso Linux Mint 19.1

Olha fiz uma coisa e funcionou, cliquei com o botão direito no Projeto, fui em Properties e troquei o Java Build Path para : JRE System Library[JavaSE-9]

Tem como configurar todos os projetos para ja terem essa configuracao quando eu cria-los?

Micael,

Tenta criar uma nova classe cópia e cola o código e verifica se erro vai apresentar novamente.

Opa, Micael! Como vai?

É isso aí! Mandou bem resolvendo a situação! Mas, só pra responder a sua pergunta

Tem como configurar todos os projetos para ja terem essa configuracao quando eu cria-los?

Quando vc cria um projeto Java, uma das janelas de criação do projeto permite que vc escolha a versão do JRE que vc quer utilizar.

Além disso, indo no menu Preferences > Java > Instaled JREs vc consegue selecionar o JRE padrão que quer utilizar junto com o Eclipse.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!