Isso significa que o tamanho do parâmetro é variável (chama varargs). Tem um efeito semelhante a passar um array de parâmetros.
Vou pegar como exemplo o fatídico méthodo main, que a gente usa no início de qualquer programa java ou C:
public static void main(String[] args)
Esse método coleta os argumentos que forem enviados na chamada ao programa numa console. Então imagina que seu programa chama "ProgramaNovo"... e você abre ele usando "java ProgramaNovo teste1.txt teste2.txt".
Nesse caso, o método main já vai receber 2 argumentos ("teste1.txt" e "teste2.txt") que vai armazenar como string no array. Você a partir de então vai poder acessar esses parâmetros no seu programa através da variável args[0] e args[1].
O mesmo ocorre com varargs. Varargs só pode ser utilizado no último parâmetro de um método, e só pode receber um tipo de variável. Por exemplo, imagine o seguinte método:
public void printParametros(String nome, String cpf, String... cursosMatriculados){
system.out.println("Nome = " + nome);
system.out.println("CPF = " + cpf);
for( int i = 0; i < cursosMatriculados.length; i++){
system.out.println("Matriculado em " + cursosMatriculados[i]);
}
}
Nesse exemplo, o método não sabe quantos cursos matriculados ele vai receber. Então ele marca como tamanho variável (pode receber 0, 1, 2... etc argumentos). Depois na chamada dessa variável, você trata ela como um vetor que vai ter armazenado .length itens. Você poderia escrever o mesmo método dessa forma:
public void printParametros(String nome, String cpf, String cursosMatriculados[])