Endereço de memória como referência

Galera, eu dei uma procurada nos tópicos mas num achei nada sobre como passar endereço de memória como referência.

Eu consigo passar o endereço da memória de uma StringBuffer para uma nova janela, e o valor alterado nessa janela se refletirá na que chamou porém eu queria fazer isso com um objeto que é um bean do meu projeto.

Alguém poderia me dar uma luz???

Basta que vc utilize os métodos set do seu Bean que vc está alterando seu objeto…

No JAVA assim como a maioria das linguagens OO, sempre passa objetos compostos (classes, não tipos básicos) como referência, pois o custo de processamento é menor já que não é preciso fazer uma cópia do objeto para outro espaço de memória.

Confira meu blog: Felipe-Lopes

Acredito que vocês não me entederam.

Eu quero na Classe A criar o Objeto X.

A partir da Classe A eu chamo a Classe B que recebe o endereço de memória do Objeto X e altera as informações.

Quando eu voltar a Classe A o Objeto X estará setado com os dados.

Eu consigo fazer isso com StringBuffer.
Eu crio a StringBuffer na Classe A, passo o endereço de memória para a Classe B.
Em classe B eu faço StringBuffer.append(“algumacoisa”).
Em Classe A eu dou um sout(StringBuffer.toString()).
Ele imprime: algumacoisa

Não quero usar variável global.

Vlw Galera, resolvi com Hashtable fazendo igual faço StringBuffer!!!

Apesar de ter resolvido, fiquei curioso, porque o que você queria fazer é um comportamento padrão.

Pessoa:

public class Pessoa {
	private String nome;
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}	
}

Classe A onde você cria o objeto:


public void seuMetodoQualquer(){
             Pessoa p = new Pessoa();
		p.setNome("GUJ");
                //Classe B
		B b= new B();
		//envia o objeto pessoa para método da classe B
                b.mudaNome(p);
		System.out.println("Nome DEPOIS :"+p.getNome());		
	}

Classe B:

...
     public Pessoa mudaNome(Pessoa p){
		System.out.println("Nome ANTIGO " +p.getNome());
		p.setNome("TESTE GUJ");
		return p;
	}

Se você rodar este código a saída será:
Nome ANTIGO: GUJ
Nome DEPOIS: TESTE GUJ

exatamente o que você queria, não entendi realmente o que precisava, se o que você descreveu é exatamente o padrão. :roll:

Estou passando o objeto de uma janela pra outra (SWING).

Entenda Classe A (Janela1) e Classe B (Janela2).

Mas vlw a abordagem sobre referência.

[quote=jj_df]Estou passando o objeto de uma janela pra outra (SWING).

Entenda Classe A (Janela1) e Classe B (Janela2).

Mas vlw a abordagem sobre referência.[/quote]

Ok. Independente do problema acima, quando usei swing a um tempinho atrás, tive alguns problemas que foram resolvidos com o pattern Observer. Caso não esteja usando, fica aí observação para utilização futuras.