Olá no meu está dando o seguinte erro e não estou conseguindo resolver.
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "br.com.bytebank.banco.modelo.Cliente.getNome()" because the return value of "br.com.bytebank.banco.modelo.Conta.getTitular()" is null at br.com.bytebank.banco.teste.util.TitularDaContaComparator.compare(TesteOrdenacao.java:58) at br.com.bytebank.banco.teste.util.TitularDaContaComparator.compare(TesteOrdenacao.java:1) at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355) at java.base/java.util.TimSort.sort(TimSort.java:220) at java.base/java.util.Arrays.sort(Arrays.java:1307) at java.base/java.util.ArrayList.sort(ArrayList.java:1721) at br.com.bytebank.banco.teste.util.TesteOrdenacao.main(TesteOrdenacao.java:45)
O meu código está assim
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.Cliente;
import br.com.bytebank.banco.modelo.Conta;
import br.com.bytebank.banco.modelo.ContaCorrente;
import br.com.bytebank.banco.modelo.ContaPoupanca;
public class TesteOrdenacao {
public static void main(String[] args) {
Conta cc1 = new ContaCorrente(22,33);
Cliente clienteCC1 = new Cliente();
clienteCC1.setNome("Nico");
cc1.setTitular(clienteCC1);
cc1.depositar(333.0);
Conta cc2 = new ContaCorrente(22,44);
Cliente clienteCC2 = new Cliente();
clienteCC1.setNome("Guilherme");
cc1.setTitular(clienteCC2);
cc1.depositar(444.0);
Conta cc3 = new ContaCorrente(22,11);
Cliente clienteCC3= new Cliente();
clienteCC3.setNome("Paulo");
cc1.setTitular(clienteCC3);
cc1.depositar(111.0);
Conta cc4 = new ContaPoupanca(22,22);
Cliente clienteCC4 = new Cliente();
clienteCC4.setNome("Ana");
cc1.setTitular(clienteCC4);
cc1.depositar(222.0);
List<Conta> lista = new ArrayList<>();
lista.add(cc1);
lista.add(cc2);
lista.add(cc3);
lista.add(cc4);
lista.sort(new TitularDaContaComparator());
System.out.println("........................");
for(Conta conta : lista) {
System.out.println(conta + ", " + conta.getTitular().getNome());
}
}
}
class TitularDaContaComparator implements Comparator<Conta>{
@Override
public int compare(Conta c1, Conta c2) {
String nomeC1 = c1.getTitular().getNome();
String nomeC2 = c2.getTitular().getNome();
return nomeC1.compareTo(nomeC2);
}
}