Como faço?

7 respostas
L

Como faço o retorno de um método que utiliza um Vector; Por Exemplo:
Preciso retornar todas as pessoas do meu Vector:

public Pessoa[] getAll()

return   O QUE???

7 Respostas

N

o rertorno nao pode ser o proprio Vector?? ou se vc nao quer modificar ele… uma cópia dele…

M

Se voce passa um vetor para para um metodo ele nao precisa retornar nada, porque o vetor é passado por referencia, ele nao faz uma copia no metodo, ele muda direto no vetor original.

V

Calma aí. Isso é um vector:

Vector vectorPessoas = new Vector();
    vectorPessoas.add(new Pessoa());

Isso é um array de pessoas:

Pessoa[] arrayPessoas = new Pessoas[100];
    arrayPessoas[0] = new Pessoa();

Tando um Vector quanto um Array são objetos em Java. E todos objetos em Java são manipulados apenas pelas suas referências. Dessa forma, fazendo

return vectorPessoas;

ou

return arrayPessoas;

Você sempre passa implicitamente uma cópia do endereço do objeto em questão. Você nunca, nunca passa o objeto propriamente dito. :wink:

M

Vinci, mas entao o que acontece nesse codigo?? ele passa o array inteiro mas nao precisa do return

import java.awt.Container;

// Java extension packages
import javax.swing.*;

public class PassArray extends JApplet {

   // initialize applet 
   public void init()
   {
      JTextArea outputArea = new JTextArea();
      Container container = getContentPane();
      container.add( outputArea );

      int array[] = { 1, 2, 3, 4, 5 };
      
      String output = 
         "Effects of passing entire array by reference:\n" +
         "The values of the original array are:\n";

      // append original array elements to String output 
      for ( int counter = 0; counter < array.length; counter++ )
         output += "   " + array[ counter ];
   
      modifyArray( array );  // array passed by reference
   
      output += "\n\nThe values of the modified array are:\n";

      // append modified array elements to String output 
      for ( int counter = 0; counter < array.length; counter++ )
         output += "   " + array[ counter ];
   
      output += "\n\nEffects of passing array " +
                "element by value:\n" +
                "a[3] before modifyElement: " + array[ 3 ];
   
      // attempt to modify array[ 3 ]
      modifyElement( array[ 3 ] );
   
      output += "\na[3] after modifyElement: " + array[ 3 ];
      outputArea.setText( output );
     
   }  // end method init
   
   // multiply each element of an array by 2 
   public void modifyArray( int array2[] )
   {
      for ( int counter = 0; counter < array2.length; counter++ )
         array2[ counter ] *= 2;
   }
   
   // multiply argument by 2
   public void modifyElement( int element )
   {
      element *= 2;
   }   
     
}  // end class PassArray
V

Ele não passa o array. Ele passa uma referência para um array. Qualquer objeto passado assim moderá ter seus valores mudados pelo método. E esses valores permanecerão alterados mesmo após o final do método. Entendeu?

M

ele nao faz uma copia do array e joga pro metodo, as alteracoes sao feitas no array existente, nao é isso?

V

Isso!

Criado 4 de agosto de 2004
Ultima resposta 5 de ago. de 2004
Respostas 7
Participantes 4