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

时间:2018-02-24 20:54:25

标签: 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;
}

}

1 个答案:

答案 0 :(得分:5)

由于分配的完成方式,您遇到了这个问题:

x=x;

这样做会触发警告信息"对变量x的赋值没有效果"。这是因为您并未引用静态变量x而是引用参数本身。

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

Second.x = x;