Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao compilar.

insira seu código aqui

Estou com o seguinte erro e não consigo entender o porquê de estar acontecendo. Poderiam me ajudar ?

Segue abaixo a mensagem de erro e o código: O erro está na linha com *, NumeroDaContaComparator comparator = new NumeroDaContaComparator();

"No enclosing instance of type Teste is accessible. Must qualify the allocation with an enclosing instance of type Teste (e.g. x.new A() where x is an instance of Teste)."

package br.com.bytebank.banco.test.util;

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

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);
        }

        System.out.println("-----------------------");
    }

    public class NumeroDaContaComparator implements Comparator<Conta> {

        @Override
        public int compare(Conta c1, Conta c2) {
            return Integer.compare(c1.getNumero(), c2.getNumero());
        }
    }
}
1 resposta
solução!

Olá Douglas, tudo bem com você?

Esse erro acontece pois a classe NumeroDaContaComparator está dentro da classe Teste. Então para usá-la o Java exige que você instancie ela através de uma outra instância de Teste.

Para resolver isso, basta tirar a classe NumeroDaContaComparator de dentro das chaves da classe Teste.

// imports

public class Teste {

    public static void main(String[] args) {

    // código do método main

    } -> fechando main

} -> fechando classe Teste

public class NumeroDaContaComparator implements Comparator<Conta> {

    @Override
    public int compare(Conta c1, Conta c2) {
        return Integer.compare(c1.getNumero(), c2.getNumero());
    }

} -> fechando classe NumeroDaContaComparator

Bom, espero que isso ajude. Testa aí e depois me avisa se funcionou!

Grande abraço e bons estudos!!