当前位置: 首页 > 知识库问答 >
问题:

我如何在不使用静态的情况下从另一个类中更改变量?

龙令雪
2023-03-14

我已经尝试通过使用getter和setter来更改下面变量x的值。

package game;
public class Game {
private int x;
private int y;

public int getX() {
    return this.x;
}

public int getY() {
    return this.y;
}

public void setX(int x) {
    this.x = x;
}

public void setY(int y) {
    this.y = y;
}

public static void main(String[] args) {
    Game game = new Game();
    Command command = new Command();
    command.changeX();
    System.out.println(game.getX());
}
}
package game;

public class Command {
Game game = new Game();

public void changeX() {
    int x = game.getX();
    game.setX(x + 1);
}
}

共有1个答案

吴城
2023-03-14

你正在创建两个完全独立的/唯一的游戏对象,在一个中改变x并期望它在另一个中改变,当你发现,这是行不通的。

而是通过setter方法或构造函数将Game对象传递到Command对象中,然后更改它。

public static void main(String[] args) {
    Game game = new Game();
    Command command = new Command(game); // *** note constructor change
    command.changeX();
    System.out.println(game.getX());
}
public class Command {
   private Game game; //  note it's not initialized here

   // pass Game in via a constructor parameter
   public Command(Game game) {
      this.game = game;   // and set the field with it
   }

   public void changeX() {
      // now you'll be changing the state of the same Game object
      int x = game.getX();
      game.setX(x + 1);
   }
 类似资料:
  • 我正在尝试从组件更新(添加,删除)查询参数。在angularJS中,由于: 我有一个应用程序,其中包含用户可以过滤,排序等列表,我想在url的查询参数中设置所有激活的过滤器,以便他可以复制/粘贴URL或与其他人共享。

  • 为了好玩(也为了在课堂上作为教学工具使用),我正在编写一个类似于JUnitTests的程序。我想用它来对高中生写的代码运行测试。当一个学生编写通过系统获得用户输入的代码时,在使用扫描仪时,我想“劫持”扫描仪来提供我自己预定的用户输入。我有一切工作很好,除了我的愿望,我的扫描仪是一个内部类的自动测试仪。 下面的例子过于简单,但却能理解这一点。 假设一个学生写了这样的代码:

  • 例如。 当我将类A作为Testng类执行时,得到以下输出 而期望的输出是

  • 问题内容: 我正在尝试使用seaborn,因为它具有distplot功能。但是我更喜欢默认的matplotlib设置。导入seaborn时,它会自动更改图形的外观。 如何在不改变地块外观的情况下使用seaborn函数? 问题答案: 0.8版(2017年7月)更改了此行为。来自https://seaborn.pydata.org/whatsnew.html#v0-8-0-july-2017: 导入s

  • 我想复制这家伙做的但不使用画布。我想有一个div在我的页面的中心,并简单地增加宽度/高度/边界半径10px每秒。这工作得很好,但是由于某种原因,div越大,它向右下方移动的越多。圆圈不是静止不动的,它的中心位置随着它变大而改变。如何在不改变位置的情况下更改div的宽度/高度? main.css index.html APP咖啡

  • 我试图模拟一个方法,从另一个方法调用,而不使用类对象。在指定的代码中,我想模拟methodA(),它调用methodB(),而不使用对象。 我无法更改现有类中的任何内容。 我已经尝试过: 莫基托。doReturn(“id”)。当(反对)。方法b(员工)