Java - Pasar por referencia en Java

   
Vista:

Pasar por referencia en Java

Publicado por Pedro (8 intervenciones) el 12/01/2008 22:17:01
Hola!! Soy nuevo en Java, estoy acostumbrado a programar en C y me ha surgido una duda de una práctica que tengo que entregar. Veréis, quiero pasar por referencia un argumento en una función, primero lo he intentado con un entero normal, un int, y no pasaba por referencia lo hacía por valor como he leído en internet.
Así que he pensado que habría que hacerlo con la clase Integer, siendo Integer un objeto, que había leído que todos los objetos se pasan como referencia, pero lo he pasado así, declarándolo como:

Integer auxiliar = new Integer (0);

y pasándolo como argumento a la función como :

if( puntos == ((JugadorPoker)this.jugadores.elementAt(j)).verJuego(auxiliar)){

la declaración d la función es:

protected int verJuego(Integer num){

y dentro de ella, sí me cambia el valor de num, pero al salir de ella no lo guarda. Alguien sabe en qué me estoy equivocando??

Muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasar por referencia en Java

Publicado por mario (58 intervenciones) el 12/01/2008 23:21:26
amigo lo q pasa es qu esta clase es inmutabe como a la clase String le sucede lo mismo, estos se pasan por valor.

Lo que podrias hacer encapsular el Integer en una nueva clase

public class ParamInteger {

private Integer ent;

public Integer getEnt() {

return ent;

}

public setEnt(Integer ent) {
this.ent=ent
}

}

usas un objeto de ParamInteger en tu programa asi si funcionara ;-)

Saludos desde Mexico

Neos Software Inc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar por referencia en Java

Publicado por Gilberto (378 intervenciones) el 13/01/2008 02:36:17
Intenta con un array como parametro:

int[] auxiliar = new int[1];
auxiliar[0] = 0;
....

if( puntos == ((JugadorPoker)this.jugadores.elementAt(j)).verJuego(auxiliar)){

....
protected int verJuego(int[] num){
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar por referencia en Java

Publicado por Pedro (8 intervenciones) el 13/01/2008 11:24:28
Gracias a los dos, he probado la solución de Gilberto que me parecía más sencilla y ha funcionado. Saludos desde España. Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar por referencia en Java

Publicado por puta.hostia (69 intervenciones) el 14/01/2008 07:29:39
La solución de la matriz es correcta, de hecho en java las matrices de los tipos primitivos se pasan por valor (los quebraderos de cabeza que me trajo en su dia). También lo de la clase "envoltorio", aunque de tu primer post se deduce que no es lo que buscabas exactamente. Puedes probar con una variable static int, no es necesario pasarla como parámetro al método, y al cambiarla dentro del método el valor cambiará "fuera" también.
Eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar por referencia en Java

Publicado por Pedro (8 intervenciones) el 14/01/2008 12:12:43
Muchas gracias, tb me lo había dixo una amiga, pero probé con la otra solución y ya funcionó. Lo que me parece extraño es que Java no tenga paso por referencia con variables normales, en qué estaban pensando cuando lo hicieron?? No lo entiendo. Bye!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar por referencia en Java

Publicado por Chema (1 intervención) el 29/01/2008 17:41:25
muy grande la solucion del Gilberto..
en si lo unico que hace falta poner para que sea un valor por referencia es poner en protected en la funcion que recibe el array... no es asi??

gracias x todo;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar por referencia en Java

Publicado por nacho (3 intervenciones) el 06/10/2008 15:49:57
No se.. no me convence para nada esa solucion, porque queda mal tener que crear un array de entereos ( o una referencia al array) para despues solo usar el primer elemento.. me parece que no es una buena practica.. es mi opinion XD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar por referencia en Java

Publicado por n_khan (1 intervención) el 06/10/2008 15:46:25
el valor de num no lo podes cambiar, porque num es una refrencia al objeto que creaste que es 'auxiliar'. En realidad esto te lo aclaro porque esta mal expresado ;)
pero entiendo tu punto y tengo el mismo problema :( saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar