Java.lang.NullpointerException

O erro só aparece na hora de compilar, o IDE não mostra nada de errado…

Classe main:

[code]import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class Banco {

public static ArrayList<Conta> contas;

public static void AtualizarContas() throws IOException{
	
	for(Conta c : contas){
     
     FileOutputStream saida = new FileOutputStream("C:/Users/guilherme/Desktop/c++/java/dado2.0/files/"+ c.getClienteNome()+".txt");
     ObjectOutputStream objetosaida = new ObjectOutputStream(saida);
     
     objetosaida.writeObject(c);
     objetosaida.close();
		
	}
	
	
}


public static void main(String[] args) throws IOException{
	
contas.add(new Conta("pedro", 10.0));
	
}

}[/code]

Outra classe:

[code]
import java.io.IOException;

public class Conta extends Banco {

private double saldo = 0;
private String ClienteNome;

Conta(String ClienteNome, double saldo) throws IOException{
	
	ClienteNome = this.ClienteNome;
	saldo = this.saldo;
	
	AtualizarContas();
	
}
	

double getSaldo(){
	
	return this.saldo;
	
}

String getClienteNome(){
	
	return this.ClienteNome;
	
}
 	
void saca(double valor){
	
	if(this.saldo > valor){
		
		this.saldo -= valor;
		
	}
}

void deposita(double valor){
	
	this.saldo += valor;
}
	



void transfere(double valor, Conta recebedor){
	
	if(this.saldo > valor){
		
		this.saldo -= valor;
	    recebedor.saldo += valor;
		
		
	}
	
}

}[/code]

erro mais especifico:

Exception in thread “main” java.lang.NullPointerException
at Banco.AtualizarContas(Banco.java:12)
at Conta.(Conta.java:13)
at Banco.main(Banco.java:30)
EDIT:

Consegui sanar o problema:

O que acontecia era que eu estava fazendo:

ClienteNome = this.ClienteNome;

Ao invés de:

this.ClienteNome = ClienteNome;

Por isso dava que o arraylist era nulo :slight_smile:

Olha o que vc está fazendo

[code]public static ArrayList contas;
//ArrayList = null;

public static void AtualizarContas() throws IOException{

	for(Conta c : contas){
    //Conta c : null

[/code]

mas o metodo “AtualizarContas” só é executado após a criação de uma nova “conta”, ou seja antes do construtor da classe “Conta” executar tal metodo a ArrayList não é mais null.

No main você está tentando inserir uma conta em uma lista nula.

Intancie o ArrayList na declaração ou antes de inserir algo.

Passe as contas como parâmetro:

public static void AtualizarContas(ArrayList<Conta> contas) throws IOException{ 

Instancie seu ArrayList e popule-o antes!