如何通过不同类Java中的方法更改对象值

Nem*_*ion 0 java

因此,我试图通过不同类中的方法来编辑对象的x值。我这样做的真正原因要复杂得多,但我只是想简化事情。

我正在创建一个游戏,并且希望在整个游戏中更新属于第一类的对象。但是,当我尝试更新它时,它会出现在另一个类中,但是,一旦将范围返回到第一类,则x值将保持为0。

我已经为此努力了好几个小时...

public class first {
    private second Second;

    public void view() {
        System.out.println(this.Second.x);
    }
    public void newObj() {
        Second = new second();
    }

    public void changeObj() {
        Second.changeX(4);
        Second = Second.getSecond();
    }

   public static void main(String[] args) {
    // TODO Auto-generated method stub
    first First = new first();
    First.newObj();
    First.changeObj();
    First.view();
   }

}


public class second {

public static int x=0;

public second getSecond() {
    return this;
}

public second(){
    x=0;
}

public static void changeX(int x) {
    x = x;
    System.out.println(x);
}

public int getX() {
    return x;
}

}
Run Code Online (Sandbox Code Playgroud)

小智 5

您由于分配的方式而遇到此问题:

x=x;
Run Code Online (Sandbox Code Playgroud)

这样做会触发警告消息“对变量x的赋值无效”。这是因为您不是在引用静态变量,x而是在引用参数本身。

每个非静态变量都存在于对象的上下文中。在这种情况下x是静态的,因此this.x = x;在静态上下文中也无法使用。正确的方法是

Second.x = x;
Run Code Online (Sandbox Code Playgroud)