exercício SCBCD

5 respostas
T
Dado:
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);
	}
}
Eu acho que OutroBean.outrometodo() imprime 2, mas o livro diz que imprime 1. Alguém sabe porque? Valeu abraços

5 Respostas

P

Kra, não sou muito experiente em Java,

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

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.

Nykolas_Lima

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.

Você está errado.

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

marcusmage

Ha! Pegadinha do Malandro…

B

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

Criado 25 de abril de 2010
Ultima resposta 26 de abr. de 2010
Respostas 5
Participantes 5