Galera eu não entendi muito bem o papel da variável livre da classe empresa:
class Empresa {
String nome;
long cnpj;
Funcionario[] funcionarios;
int livre = 0;
void adiciona(Funcionario fun) {
this.funcionarios[this.livre] = fun;
this.livre++;
}
void mostraFuncionarios(){
for( int i = 0; i < this.livre; i++ ){
System.out.println("Funcionario na posição: " + i);
System.out.println("Salario: R$ " + this.funcionarios[i].salario);
}
}
}
void mostraFuncionarios(){
for( int i = 0; i < this.funcionarios.length; i++ ){
System.out.println("Funcionario na posição: " + i);
System.out.println("Salario: R$ " + this.funcionarios[i].salario);
}
}
Eu fiz o método mostraFuncionarios de duas formas usando o this.funcionarios.length e o this.livre. Quando eu executo a classeTestaEmpresa com o this.funcionarios.length e um array de 10 posições, ele mostra os quatro funcionários que eu criei e depois dá um erro de NullPointerException. Com o this.livre, mostra os quatro sem o erro.
Agradeço desde já qualquer esclarecimento!