所以我尝试通过不同类中的方法编辑对象的 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;
}
}
最佳答案
您遇到这种情况是因为分配的完成方式:
x=x;
仅仅这样做就会触发警告消息“对变量 x 的赋值无效”。这是因为您引用的不是静态变量 x 而是参数本身。
每个非静态变量都存在于对象的上下文中。在这种情况下,x
是静态的,因此在静态上下文中使用 this.x = x;
也是不可能的。正确的做法是
Second.x = x;
关于java - 如何通过不同Java类中的方法更改对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967507/