NullPointerException para setar um bean com array

10 respostas
jason_bourne

Amigos,

Estou tentando setar um bean usando array mas esta dando NullPointerException. Alguém pode me ajudar?

ProdutoDTO produtoDTO = null;
produtoDTO = new ProdutoDTO();
produtoDTO.getTipoFiscalProdutoDTO()[0].setCodPessoaDetalhe(1L);//<-aqui da o NullPointerException

O bean:

public class ProdutoDTO implements Serializable{

.
.
.
    
    private TipoFiscalProdutoDTO[] tipoFiscalProdutoDTO;
.
.
.
    public TipoFiscalProdutoDTO[] getTipoFiscalProdutoDTO() {
		return tipoFiscalProdutoDTO;
	}

	public void setTipoFiscalProdutoDTO(TipoFiscalProdutoDTO[] tipoFiscalProdutoDTO) {
		this.tipoFiscalProdutoDTO = tipoFiscalProdutoDTO;
	}

10 Respostas

renzonuccitelli

Vc não inicializou o tipoFiscalDoProduto em sua classe. Inicialize ele no construtor. Além do que, tem que ver a sua regra de negócio, se por acaso esse vetor puder ser nulo, vc vai ter que ver testar isso antes de usá-lo…

jason_bourne

Como eu inicializaria? assim:

public ProdutoDTO()
	{
		tipoFiscalProdutoDTO = new TipoFiscalProdutoDTO[];
	}

Eu tentei isso mas da problema.

E esse ele não aceita:

public ProdutoDTO()
	{
		tipoFiscalProdutoDTO = new TipoFiscalProdutoDTO();
	}
renzonuccitelli
eduacsp:
Como eu inicializaria? assim:
public ProdutoDTO()
	{
		tipoFiscalProdutoDTO = new tipoFiscalProdutoDTO[];
	}

Depende de sua regra de negócio. Se nela o ProdutoDTO deve possuir ao menos um tipoFiscalProdutoDTO, eu inicializaria assim:

public ProdutoDTO(TipoFiscalProdutoDTO tipoFiscal)
	{
                //aqui eu colocaria o número maximo 
                //de tiposFiscais. Caso não saiba o numero, troque por uma Collection, como List
		tipoFiscalProdutoDTO = new tipoFiscalProdutoDTO[10];
                tipoFiscalProdutoDTO[0]=tipoFiscal;

	}

Também teria que fazer uns método para adicionar os tipos fiscais...

renzonuccitelli

Deu problema pq vc não colocou o o núemro de elementos do vetor ao iniciá-lo…

jason_bourne

Ainda assim da o NullPointerException…eu coloquei dessa forma:

public ProdutoDTO()
	{
		tipoFiscalProdutoDTO =  new TipoFiscalProdutoDTO[2];
	}
S

Porque o array está vazio. Não tem nada na posição zero.

jason_bourne

Ueh…quando eu dou um new ele já não cria pra mim??

renzonuccitelli

Não, vc tem que criar um a um, ou pelo menos passar referencias…

jason_bourne

Como faço isso?

renzonuccitelli

public ProdutoDTO() { tipoFiscalProdutoDTO = new TipoFiscalProdutoDTO[2]; tipoFiscalProdutoDTO[0] = new TipoFiscalProdutoDTO(); tipoFiscalProdutoDTO[1] = new TipoFiscalProdutoDTO(); }

pode ser desse jeito, ou vc poderia criar um laço para criar todos, ou vc poderia passar referencias para cada um dos elementos, ou vc poderia passar logo um vetor inteiro…

Criado 12 de dezembro de 2008
Ultima resposta 12 de dez. de 2008
Respostas 10
Participantes 3