Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida no Ex. 2 da Aula 6 - Construtores

Amigos, criei o construtor da seguinte maneira:

class Empresa{
    private String nomeEmpresa;
    private String cnpj;
    private Funcionario[] empregados;
    private int posicaoArrayLivre = 0;
    private int tamanhoArray = 0;

    //construtor
    public Empresa(int tamanhoArray){
        this.tamanhoArray = tamanhoArray;
        Funcionario[] empregados = new Funcionario[this.tamanhoArray];
    }

Mas, ao compilar o TestaEmpresa, dava erro de Null Pointer Exception

Notei, então, que meu construtor deveria ser:

    //construtor
    public Empresa(int tamanhoArray){
        this.tamanhoArray = tamanhoArray;
        this.empregados = new Funcionario[this.tamanhoArray];
    }

Pergunta: por que estava dando erro de Null Pointer Exception ao utilizar o Funcionario[] empregados = new Funcionario[this.tamanhoArray] no construtor?

6 respostas

Samuel, Bom dia !

você pode postar sua classe de teste , para analisar o que está acontecendo ?

solução!

Samuel,

vamos compara os dois códigos que você passou:

//construtor
    public Empresa(int tamanhoArray){
        this.tamanhoArray = tamanhoArray;
        Funcionario[] empregados = new Funcionario[this.tamanhoArray];
    }

na primeira versão (acima), você está declarando uma variável empregados dentro do construtor e inicializando essa variável, que é local então só vai ser vista dentro do construtor. Esse código nem deveria compilar, pois você está tentando criar uma variável com o mesmo nome de um atributo que já foi declarado na classe Empresa.

//construtor
    public Empresa(int tamanhoArray){
        this.tamanhoArray = tamanhoArray;
        this.empregados = new Funcionario[this.tamanhoArray];
    }

No segundo caso está certíssimo, você inicializa o empregados que já foi declarado na classe Empresa.

Espero que você tenha entendido.

Bons estudos.

Obrigado, Djonathan. Se eu não estivesse com sono, talvez teria notado que era óbvio ;-) Abraço.

Rsrsrs

Acontece, mas q bom q VC entendeu.

Sucesso.

public Empresa(String cnpj, int arrayPosicoes){
        this.cnpj = cnpj;
        this.empregado = new Funcionario[arrayPosicoes];
    }

class teste{
    public static void main(String [] args){
        Empresa empresa = new Empresa("123321",5);
    }
}