Apostila FJ-11 Caelum, problemas com casting de referência

Bom dia a todos do GUJ,

Sou iniciante no Java e estou na página 175 da apostila FJ11 da Caelum.

Nessa parte da apostila estamos vendo como efetuar o casting de refência, dessa forma a classe Object que é o pai de todas as classes é apresentada.

Segue o código que desenvolvi para testar o casting logo abaixo.

[code]class GuardadorDeObjetos{

private Object[] arrayDeObjetos = new Object[100];
private int posicao = 0;

public void adicionaObjeto(Object object){
	
	this.arrayDeObjetos[this.posicao] = object;
	this.posicao++;
	
}

public Object pegaObjeto (int indice){
	
	return this.arrayDeObjetos[this.posicao];
	
}

}

class Conta{

private int numero;
private int cpf;

public int getNumero() {
	return numero;
}
public void setNumero(int numero) {
	this.numero = numero;
}
public int getCpf() {
	return cpf;
}
public void setCpf(int cpf) {
	this.cpf = cpf;
}

}
public class Apresenta {

public static void main(String[] args) {

	GuardadorDeObjetos guardador = new GuardadorDeObjetos();
	
	Conta conta = new Conta();
	
	conta.setCpf(1000);
	conta.setNumero(23000);
	
	guardador.adicionaObjeto(conta);
	
	Object object = guardador.pegaObjeto(0); // pega a conta referenciado como objeto

	//Casting de referência
	Conta contaResgatada = (Conta) object;
	
	System.out.println(contaResgatada.toString());
}

}[/code]

Quando compilo, nenhum erro é apresentado, porem no runtime a jvm me retorna uma Exception:

Exception in thread "main" java.lang.NullPointerException at Apresenta.main(Apresenta.java:61)

Eu dei um contaResgatada.toString() para verificar se os atributos CPF e NUMERO da minha classe Cliente haviam sido mantidos, mesmo sabendo que era pouco provavel (poderia ter dado um getCpf, mas tanto faz nesse caso).

Mesmo assim ele da esse erro, como se a referencia ao objeto apontasse para NULL.

Alguem tem uma dica do porque desse erro?

Muito grato desde ja.

A nullPointerException é lançada quando você tenta usar uma referência a objeto que está com o valor null…

Encontrei um erro no método:

[code] public Object pegaObjeto (int indice){

    return this.arrayDeObjetos[this.posicao];  
      
}[/code]  

Ao invés de pegar a posição de ‘this.posicao’ você deveria pegar o dá posição de ‘indice’, pois ‘this.posicao’ aponta para uma referência nula, visto que você lincrementa esse atributo sempre que insere um novo objeto. O método deve ficar desta forma:

[code] public Object pegaObjeto (int indice){

    return this.arrayDeObjetos[indice];  
      
}  [/code]

Espero ter ajudado… =D

nandooliveira disse tudo.

lembrando que se vc fazer isso.

 System.out.println(contaResgatada.toString());

Vai imprimir o código hash do objeto.

Pessoal, muito obrigado.

Realmente dei uma vacilada no indice.

Obrigado pelo suporte.