exercício SCBCD

Dado:

[code]public class MinhaClasse{
public int att;
}

public interface ARemote{
public void metodo(MinhaClasse m);
}

@Stateless
@Remote(ARemote.class)
public class ABean implements ARemote{
public void metodo(MinhaClasse m){
m.att=2;
}
}

@Stateless
@Remote(OutroRemote.class)
public class OutroBean implements OutroRemote{

@EJB
ABean abean;

public void outrometodo(){
	MinhaClasse m = new MinhaClasse();
	m.att=1;
	abean.metodo(m);
	System.out.println(m.att);
}

}

[/code]
Eu acho que OutroBean.outrometodo() imprime 2, mas o livro diz que imprime 1. Alguém sabe porque?
Valeu
abraços

Kra, não sou muito experiente em Java,

mas, cade o new do ABean?
otra, debuga ele q vc descobre sozinho :slight_smile:

Vale lembrar que em Java, passamos uma cópia como argumento para o método. Então, a atribuição de m.att = 2, no Bean não tem efeito sobre o valor do atributo da classe MinhaClasse.
Logo será apresentado 1, como resultado.

Talvez eu num fui muito claro.

Abrazz.

[quote=marcusmage]Vale lembrar que em Java, passamos uma cópia como argumento para o método. Então, a atribuição de m.att = 2, no Bean não tem efeito sobre o valor do atributo da classe MinhaClasse.
Logo será apresentado 1, como resultado.

Talvez eu num fui muito claro.

Abrazz.[/quote]

Você está errado.

Para primitivos é passado uma cópia, para Objetos é passada uma referência ao objeto.

Ha! Pegadinha do Malandro…

Vai dar 2 mesmo…A lógica dessa questão está muito mais para prova SCJP que a SCBCD…