Eu poderia percorrer o array dessa maneira e adicionar quando encontrasse uma posição livre?
class Empresa {
String nome;
String cnpj;
Funcionario[] func;
void adiciona(Funcionario f) {
for (int i = 0; i < func.length; i++) {
if (this.func[i] == null) {
this.func[i] = f;
}
}
}
}