Pergunta

Um método pode retornar múltiplos valores?

Resposta

Sim. Isto é possível de duas formas básicas: (1) através do uso de vetores ou (2) através do uso de objetos java.util.Vector.

Um método pode retornar múltiplos valores de um mesmo tipo se estes forem acondicionados num vetor (array), isto é, se o método retornar um vetor de valores ao invés de um valor simples. No exemplo abaixo um método denominado criaVetorInteiro retorna um vetor cujo tamanho é especificado pelo parâmetro recebido pelo método, preenchido com o valor do segundo parâmetro:

int[] criaVetorInteiro(int tamanho, int valor) {
  // Cria vetor inteiro no tamanho dado
  int vetor[] = new int[tamanho];
  // Preenche vetor com valor dado
  for (int i=0; i<tamanho; i++) {
    vetor[i] = valor;
  }
  // retorna vetor
  return vetor;
}

Tal método pode ser utilizado da seguinte forma:

int resultado[] = criaVetorInteiro(12, -1);
System.out.println("Tamanho retornado: "+resultado.length);
System.out.println("Primeiro valor: "+resultado[0]);
System.out.println("Ultimo valor: "+resultado[12-1]);

Isto demonstra como um método pode retornar vários valores de um mesmo tipo.

Para que seja possível o retorno de valores diversos de tipos diferentes, como por exemplo uma lista contendo objetos de tipos diferentes, o método em questão deve retornar um objeto do tipo java.util.Vector (JavaFaq 0063):

Vector retornaListaObjetos() {
  // Cria objeto Vector
  Vector resultados = new Vector(10);
  // Insere elementos no Vector
  resultados.addElement(objeto1);
  :
  // retorna Vector
  return resultados;
}