De pronto estaba estudiando para el parcial y me encuentro con un problema. Necesitaba una programar un método de éste estilo:
String Extraer(String &s){
String r = s[0];
s = s.copy(1, s.length()-1);
return r;
}Ese método extrae el primer caracter de s, lo retorna por valor y por referencia "retorna" s modificado.
Pero JAVA me presentó un desafio en cuanto a ésto, JAVA no pasa por referencia!!
Asi que después de investigar encontré una manera:
public class aea{
public static void main(String []args){
myString i = new myString();
i.set("gaston");
aea a = new aea();
a.f(i);
String t = "gaston";
a.g(t);
System.out.println("obj "+i.get());
System.out.println("var "+t);
}
public void g(String s){//por valor
s = "rodolfo";
}
public void f(myString y){//por valor "y" por referencia x
y.set("rodolfo");
}
}
class myString{
private String x;//att
public myString(){ x = "";}//cons
public String get(){return x;}//f m
public void set(String xxx){x = xxx;}
}
La solución implica crear un objeto que tenga como atributo las variables que cierto metodo necesita modificar -al estilo de procedure de pascal- y aplicar los cambios a sus miembros, logrando asi propagación fuera de éste.
No se que creen ustedes, pero me parece una pérdida de tiempo tener que declarar otra clase para poder usar funciones con "argumentos pasados por referencia".
Saludos.