Zugriffsbeschränkung austricksen?



  • Hallöchen, ich lerne gerade Java stolpere über ein Problem. Ich habe folgende Klasse:

    class SpielObjekt
    {
       public SpielObjekt()
       {
          position = new Point(rand.nextInt(40), rand.nextInt(10));
       }
    
       public Point givePos()
       {
          return position;
       }
    
       private Point position;
       private static java.util.Random rand = new java.util.Random();
    }
    

    und stelle fest, dass ich die Position von außerhalb via

    ...
    SpielObjekt player = new SpielObjekt();
    player.givePos().x = 80;
    ...
    

    ungewollt/unerwünscht auf einen ungültigen Wert setzen kann. Wie kann ich das verhindern?


  • Mod

    Mit einem Copy-Konstruktor:

    public Point givePos()
       {
          return new Point(position);
       }
    

    Oder indem Du in Point die x und y Koordinate als final deklarierst, so dass man sie nur einmal setzen kann.


Log in to reply