Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 2 da Aula 4 - Arrays

Abaixo segue o gabarito e a respectiva duvida:

 class Empresa {
            Funcionario[] empregados;
            String cnpj;
            int livre = 0;

            void adiciona(Funcionario f) {
                this.empregados[this.livre] = f;
                this.livre++;
            }
        }

o Array empregados nao deveria ser instanciado com o new?

1 resposta
solução!

Oi Laudelino,

Você poderia instanciar sim o array dentro da classe Empresa mas aí ele sempre terá o mesmo tamanho quando instanciar a classe Empresa, por exemplo:

class Empresa {
    private Funcionario [] empregados = new Funcionario[10];
}

class TestaEmpresa {
    public static void main(String [] args){
        Empresa caelum = new Empresa();
        Empresa alura = new Empresa();

        System.out.println(caelum.empregados.length);
        System.out.println(alura.empregados.length);

        // Ambos os prints vão aparecer 10 no tamanho do array
    }
}

Se você quiser passar só na hora do teste, você pode instanciar esse array só quando precisar utilizá-lo:

class Empresa {
    private Funcionario [] empregados ;
}

class TestaEmpresa {
    public static void main(String [] args){
        Empresa caelum = new Empresa();
        Empresa alura = new Empresa();

        caelum.empregados = new Funcionario[20];
        alura.empregados = new Funcionario[10];

        System.out.println(caelum.empregados.length);
        System.out.println(alura.empregados.length);

        // Agora o primeiro print imprimirá 20 e o segundo 10
    }
}

Qualquer dúvida é só falar!

PS: Só não esquece de formatar o código com 3 backticks (`) antes e 3 depois pra ele aparecer bonitinho (já formatei pra vc) :D

Abraço!