Problema com realocação de array

Boa noite, estou com um problema onde preciso criar um array de funcionários, e através de um método adicionar funcionários a ele, e assim que o array ficar cheio devo criar um array novo com um limite maior e copiar os valores pra essa copia e acrescentar o funcionário.

public void adiciona(Funcionario f) {
		
		for(int i=0; i< this.funcionarios.length; i++) {
			if(this.funcionarios[i] == null) {
				this.funcionarios[i] =f;
				break;
			}
		}
		
	}

Mas não consigo fazer com que crie um array novo, Já tentei mexer com o método Arrays.copyOf mas ainda não adianta e sempre acaba com ArrayIndexOutOfBoundsException Espero que possam me ajudar.

Por que precisa criar outro array?

public void adiciona(Funcionario funcionario) {
	boolean arrayCheio = true;
	int tamanho = funcionarios.length;
	for (int i = 0; i < tamanho; i++) {
		if (funcionarios[i] == null) {
			funcionarios[i] = funcionario;
			arrayCheio = false;
			break;
		}
	}
	if (arrayCheio) {
		Funcionario[] novoArray = new Funcionario[tamanho * 2];
		System.arraycopy(funcionarios, 0, novoArray, 0, tamanho);
		novoArray[tamanho] = funcionario;
		funcionarios = novoArray;
	}
}
2 curtidas

Muito obrigado, solução perfeita.