Olá, o código abaixo não compilou. Deu um exception error "NullPointerException". Poderiam me ajudar a encontrar o problema?
package br.com.bytebank.banco.modelo;
/**
*
* @author Roger Ruiz da Silva
* @version 0.1
*
*/
public abstract class Conta implements Comparable<Conta> {
protected double saldo;
private int agencia;
private int numero;
private Cliente titular;
private static int total = 0;
/**
* Construtor para inicializar o objeto Conta a partir da agencia e numero
* @param agencia
* @param numero
*/
public Conta(int agencia, int numero) {
Conta.total++;
// System.out.println("O total de contas é " + Conta.total);
this.agencia = agencia;
this.numero = numero;
this.saldo = 100;
// System.out.println("Estou criando a conta " + this.numero);
}
public abstract void deposita(double valor);
/** Valor precisa ser maior que o saldo
*
* @param valor
* @throws SaldoInsuficienteException
*/
public void saca(double valor) throws SaldoInsuficienteException {
if (this.saldo < valor) {
throw new SaldoInsuficienteException("Saldo insuficiente");
}
this.saldo -= valor;
}
public void transfere(double valor, Conta destino) throws SaldoInsuficienteException {
this.saca(valor);
destino.deposita(valor);
}
public double getSaldo() {
return this.saldo;
}
public int getNumero() {
return this.numero;
}
public void setNumero(int numero) {
if (numero <= 0) {
System.out.println("Nao pode valor menor igual a 0");
return;
}
this.numero = numero;
}
public int getAgencia() {
return this.agencia;
}
public void setAgencia(int agencia) {
if (agencia <= 0) {
System.out.println("Nao pode valor menor igual a 0");
return;
}
this.agencia = agencia;
}
public void setTitular(Cliente titular) {
this.titular = titular;
}
public Cliente getTitular() {
return this.titular;
}
public static int getTotal() {
return Conta.total;
}
@Override
public boolean equals(Object ref) {
Conta outra = (Conta)ref;
if(this.agencia != outra.agencia) {
return false;
}
if(this.numero != outra.numero) {
return false;
}
return true;
}
@Override
public int compareTo(Conta outra) {
return Double.compare(this.saldo, outra.saldo);
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "Numero: " + this.numero + ", Agencia: " + this.agencia;
}
}
package br.com.bytebank.banco.teste.util;
import java.util.ArrayList;
import java.util.Collections;
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);
Collections.sort(lista);
for (Conta conta : lista) {
System.out.println(conta + ", " + conta.getTitular().getNome());
}
}
}
class NumeroDaContaComparator implements Comparator<Conta>{
@Override
public int compare(Conta c1, Conta c2) {
return Integer.compare(c1.getNumero(), c2.getNumero());
}
}