Ol� amigo Carlos,
 
O amigo(se eu chamar de companheiro v�o achar q sou comunista) Jonatan e o exemplo do amigo Bruno Borges enriquecem e sanam a d�vida q Java APENAS faz a passagem atrav�s de valores e n�o por refer�ncia !! Quando um objeto � instanciado e passado como argumento por um m�todo, O VALOR do argumento � a referencia para o objeto !!! Esque�a se algu�m pensa q vai uma "c�pia do objeto" dentro de algum m�todo.
A passagem por valor � at� uma forma inteligente de se economizar recursos de mem�ria.
 
D� s� uma lida nesse pequeno trecho aqui, tirado de uma apostila da pr�pria Sun (slide 137 of 506) :
 
Pass-by-Value
• The Java programming language only passes
arguments by value
• When an object instance is passed as an argument to a
method, the value of the argument is a reference to the
object
• The contents of the object can be changed in the called
method, but the object reference is never changed
 
 
Na pr�tica, Bruno Borges peguei seu c�digo e fiz pequenas altera��es, saca o c�digo q o amigo Bruno colocou (envio a classe anexo tb) :

import java.util.*;

public class atribuicao { 
 
 public static void main(String[] args) {  
   atribuicao roda = new atribuicao();  
   roda.teste();
 } 
 
 public void teste() {
 
   Object a, b; 
   a = new Vector();
   b = new Date();   
   
   System.out.println("------- 1 parte ----------\n" );
   System.out.println("a eh instancia de Vector? "+ (a instanceof Vector) + "\n" );
   System.out.println("b eh instancia de Date? "+ (b instanceof Date) + "\n" );
       
   metodo_atribuicao(a, b);
 
   a = b;
    
     System.out.println("------- 2 parte ----------\n" );
     System.out.println("a eh instancia de Vector? "+ (a instanceof Vector) + "\n" );
     System.out.println("b eh instancia de Date? "+ (b instanceof Date) + "\n"

 
 public void metodo_atribuicao(Object a, Object b) {
  
   a = b;
  
   System.out.println("------- 3 parte ----------\n" );
   System.out.println("a eh instancia de Vector? "+ (a instanceof Vector) + "\n" );
   System.out.println("b eh instancia de Date? "+ (b instanceof Date) );     
 }
 
}
 
A sa�da disso a� fica assim :
 
------- 1 parte ----------
a eh instancia de Vector? true
b eh instancia de Date? true
 
------- 3 parte ----------
a eh instancia de Vector? false
b eh instancia de Date? true

------- 2 parte ----------
a eh instancia de Vector? false
b eh instancia de Date? true
 
Bom amigos da lista espero ter ajudado a confund....quero dizer, espero ter ajudado!! (Imagina se cai uma pergunta assim na prova de certifica��o ??)
 
EmTEMPO : Lembro-me meu GURU (Professor Paulo Tiburcio), comentou uma vez q havia um "jeitinho" para se burlar isso em Java e SIMULAR uma passagem por refer�ncia.

Edson CARVAlho
Analista de Tecnologia Web/Wireless
w-Aura

Rua da Assembl�ia, 100 - 19 Andar
Rio de Janeiro, RJ 20011-000
Tel: +55 21 3806-3355 / Cel: +55 21 9329-0238
[EMAIL PROTECTED]   www.waura.com.br


-----Original Message-----
From: Carlos Eduardo Carvalho [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, November 05, 2002 8:29 AM
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Duvida sobre atribuicao de objetos...

Jonatan,
 
Essa � uma afirma��o perigosa de ser feita. N�o sei se a passagem de par�metros em Java seria exatamente por valor, ao inv�s de por refer�ncia. Nesse mesmo exemplo que voc� citou na mensagem abaixo, pode ser simulada uma situa��o onde fica clara essa contradi��o.
 
Vamos supor que tenhamos dois m�todos, executar() e metodoAtribuicao(), como seguem abaixo.
 
public void executar() {
    MeuBean a = new MeuBean();
    MeuBean b = new MeuBean();
 
    a.setNome("Teste Atribuicao");
 
    metodoAtribuicao(a, b);
 
    System.out.println("Bean A: "+a.getNome()); // A impress�o na console da
    System.out.println("Bean B: "+b.getNome()); // aplica��o ter� o mesmo valor
}
 
public void metodoAtribuicao(MeuBean a, MeuBean b) {
    b.setNome(a.getNome());
}
 
A partir desta justificativa creio que seja mais correto dizer que a passagem de par�metros de objetos em m�todos seja por refer�ncia, enquanto que a passagem de par�metros de tipos b�sicos do java em m�todos seja por valor. � uma quest�o meio confusa de se afirmar, mas se estiver errado, corrijam-me!
 
Falou!
 
Carlos Eduardo Teixeira Carvalho
Analista de Sistemas - F�brica de Software
Unitech Tecnologia de Informa��o
----- Original Message -----
Sent: Monday, November 04, 2002 7:09 PM
Subject: Re: [java-list] Duvida sobre atribuicao de objetos...

A passagem de par�metros em java � por valor, e n�o por refer�ncia. Ent�o,
 
public void metodo_atribuicao(Object a, Object b) {
    a = b;
}
n�o tem efeito algum. O objeto 'a' � passado ao m�todo, mas quando voc� faz a atribui��o, voc� est� fazendo com que o par�metro a seja alterado, ou seja, ele deixa de apontar para o local em que foi definido na chamada do m�todo e passa a apontar para o local do objeto b.

---
Jonatan Schroeder
[EMAIL PROTECTED]
 
 
----- Original Message -----
Sent: Monday, November 04, 2002 2:22 PM
Subject: [java-list] Duvida sobre atribuicao de objetos...

Galera,
Eu gostaria que algu�m me esclarecesse o seguinte ocorrido.
Eu queria fazer uma atribuicao de dois objetos dentro de um metodo e nao
consegui, quando retorna do metodo a atribuicao � desfeita. Fora do metodo a
atribuicao ocorre e um "aponta" para o outro.
O exemplo est� abaixo:

public void teste(){

   Object a, b;

   a = new Vector();
   b = new Date();

   metodo_atribuicao(a, b);
   // Apos o metodo_atribuicao, o objeto a nao esta "apontando" para o
objeto b
  // ou seja, o objeto a continua como Vector e o objeto b como Date.

  a = b;
  // Agora sim o objeto a "aponta" para o objeto b
  // ou seja, o objeto a agora � Date e o objeto b tambem
}

public void metodo_atribuicao(Object a, Object b) {
    a = b;
}

_______________________________________________________________________
Yahoo! GeoCities
Tudo para criar o seu site: ferramentas f�ceis de usar, espa�o de sobra e acess�rios.
http://br.geocities.yahoo.com/

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Attachment: atribuicao.java
Description: Binary data

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------


Responder a