【问题标题】:Changing object's value with using set-get methods使用 set-get 方法更改对象的值
【发布时间】:2021-06-19 12:13:16
【问题描述】:
public Location stairUp(Location oldLocation,Room newRoom){ // This is from my stair class
    Location newLocation=new Location(newRoom,Game.selectedHero, Game.selectedHero.getLevel(), newRoom.getFloor());
    setOldLocation(newLocation);
    return oldLocation;
}

我想用这个方法改变用户的位置。如您所见,我有 Location 类及其构造函数。但我无法分配新位置。它不起作用旧位置停留。基本上,我的问题是如何使用旧对象的参数分配新对象而不是旧对象?


//Rooms
Room room1=new Room(1,1,monster16,stair);
Room room2=new Room(2,2,monster15_Assassin,stair);
Location location=new Location(room1,Game.selectedHero,selectedHero.getLevel(), room1.getFloor());
System.out.println("---------------old---------------");
location.displayLoc(selectedHero);
stair.stairUp(location,room2);
System.out.println("-----------new---------");
location.displayLoc(selectedHero);

这是我使用对象的主要部分。我该如何解决?

【问题讨论】:

    标签: java oop get set


    【解决方案1】:

    如果老位置不变,有两种可能,

    • 您并没有真正改变分配新位置对象的地址 到旧的位置对象
    • 您仍在使用旧位置的对象。

    问题出在 setOldLocation() 或旧位置对象的使用部分。

    【讨论】:

      【解决方案2】:

      查看返回stairUp方法,我不确定为什么从该方法返回oldLocation。你应该知道这个方法返回的“oldLocation”是传递给这个方法的局部变量

      public Location stairUp(Location **oldLocation**,Room newRoom)

      这总是指向传递给方法的位置的旧值。

      【讨论】:

      • 即使我不使用return,并且使用void代替return,它仍然没有改变。
      • 尝试对方法进行这些更改并调用 ``public Location stairUp(Location oldLocation,Room newRoom){ // 这是来自我的楼梯类 return new Location(newRoom,Game.selectedHero, Game. selectedHero.getLevel(), newRoom.getFloor()); } ....... location = stair.stairUp(location,room2); System.out.println("------------新---------"); location.displayLoc(selectedHero); ``
      猜你喜欢
      • 2021-03-19
      • 2013-02-08
      • 1970-01-01
      • 2013-12-26
      • 2019-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多