Parametro por referencia

4 respostas
DivieX

Pessoa tenho um formulário (j2me) onde o usuário preenche alguns dados do pedido que será lancado.
Em algum momento eu chamo o metodo getInfo() do formulário. Este metodo deve preencher uma instancia da classe Pedido com as informações que o usuário colocou no formulário.
segue o metodo getInfo(Pedido) na classe Formulário

public void getInfo(Pedido pedido){
novo = new Pedido();
novo.cliente = "cliente que o usuário escolheu";

pedido = novo;
}

Segue o codigo onde chamo o metodo getInfo() do formulário

Pedido p = new Pedido();
formulario.getInfo(p);//o formulário deve preencher os atributos da instancia "p"
//aqui será esperado que "p" estivesse com as informações, conforme o metodo getInfo() preencheu, porem "p" continua como se getInfo não tivesse feito nada.

O problema é que parece que nao da pra passar um objeto por referencia em um parametro!

é verdade isso? como contorno este problema?

4 Respostas

T

Isto aqui não vai funcionar.

novo = new Pedido();  
 novo.cliente = "cliente que o usuário escolheu";  
   
 pedido = novo;

O correto, obviamente, é fazer:

public void getInfo(Pedido pedido){  
    pedido.cliente = "cliente que o usuário escolheu";  
}
rodpuc

todo e qualquer objeto é passado por referência em Java

B

rodpuc:

O problema é que parece que nao da pra passar um objeto por referencia em um parametro!

todo e qualquer objeto é passado por referência em Java

Há controvérsias.

Passagem por referência significa que a função receptora pode saber o endereço de memória do objeto passado, e com isso pode colocar um outro objeto nesse endereço.

Como Java não possui isso, as referências para os objetos são passadas por cópia, e o objeto ganha uma nova variável que o refere.

rodpuc

Não há controvérsia, como vc msm disse as referências para os objetos são passadas por cópia logo o objeto é passado por referência. O fato da referência ser copiada é apenas um detalhe de implementação, não muda o fato.

Criado 14 de maio de 2009
Ultima resposta 14 de mai. de 2009
Respostas 4
Participantes 4