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

Erro de compilação

Olá, no código abaixo, aparece um erro na linha que instancia o comparator. O que estaria errado?

Mensagem:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    No enclosing instance of type TesteComparator is accessible. Must qualify the allocation with an enclosing instance of type TesteComparator (e.g. x.new A() where x is an instance of TesteComparator).

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

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import br.com.bytebank.banco.modelo.*;

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

public class TesteComparator {
    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<Conta>();
        lista.add(cc1);
        lista.add(cc2);
        lista.add(cc3);
        lista.add(cc4);

        NumeroDaContaComparator comparator = new NumeroDaContaComparator();
        lista.sort(comparator);
    }

    class NumeroDaContaComparator implements Comparator<Conta>{

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

    }

}
1 resposta
solução!

Eae Roger, blz?

Você deve criar a classe NumeroDaContaComparator após o fechamento das chaves da classe TesteComparator e não ao final do método main.

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

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import br.com.bytebank.banco.modelo.*;

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

public class TesteComparator {
    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<Conta>();
        lista.add(cc1);
        lista.add(cc2);
        lista.add(cc3);
        lista.add(cc4);

        NumeroDaContaComparator comparator = new NumeroDaContaComparator();
        lista.sort(comparator);
    }

}

class NumeroDaContaComparator implements Comparator<Conta>{

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

    }

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