/**
Tauschen mit "Referenzparameter" über eine Hilfsklasse.

Das Programm liefert folgende Ausgabe:

alte Werte : x=10, y=12
neue Werte : x=12, y=10

*/
/*-----------------------------------------------------------------------*/

class ReferenzParameter
{
   /**
   *  Tauscht Inhalt zweier Variablen (per Referenz)
   *  @param a erste Variable
   *  @param b zweite variable
   */
   static void tausche(Lang a,Lang b)
   {  long h=a.x;
      a.x=b.x;
      b.x=h;
   }

   /**
   *  Testumgebung für Referenzparameter
   */    
   public static void main(String[] argv)
   {  long x=10,y=12;
      System.out.println("alte Werte : x="+x+", y="+y);
      Lang xx=new Lang(x);
      Lang yy=new Lang(y);
      tausche(xx,yy);
      x=xx.x;  y=yy.x;
      System.out.println("neue Werte : x="+x+", y="+y);
   }
}

/**
Hilfsklasse für "call by reference"; 
lediglich "Klassenkapsel" um primitiven Typ gelegt.
*/
class Lang
{  long x;
   /**
   *  Default-Konstruktor 
   */
   Lang()  {}
   /**
   *  "Umwandlung" von long nach Lang
   */
   Lang(long z)
   {  x=z; }
}
