jueves, abril 30, 2009

En Java SIEMPRE los parametros son por valor

En Java por extraño que parezca todos los parametros son por valor, incluidas las referencias a objetos, pero esto no queda aquí. Las referencias actuan como inmutables, osea que aunque hagas dummy = new Dummy(); y modifiques valores al salir del método ese puntero dummy tendrá la misma referencia al objeto con el que entró, si no los creis comprobadlo vosotros mismos con este clase.


public class Item {
private String desc;

public String getDescription()
{
return desc;
}

public void setDescription(String d)
{
desc = d;
}

public void modifyDesc(Item item, String desc)
{
item = new Item();
item.setDescription(desc);
System.out.println(item.getDescription());
}

public static void main(String[] args)
{
Item it1 = new Item();
it1.setDescription("Primero");
Item it2 = new Item();
it2.setDescription("Segundo");
it2.modifyDesc(it1, "Tercero");

System.out.println(it1.getDescription());
System.out.println(it2.getDescription());
}
}


De hecho el resultado de ejecutar eso es:


Tercero
Primero
Segundo


Amazing ¿verdad? Pues a mí me parece una auténtica porquería :D

No hay comentarios: