因此,我试图通过不同类中的方法来编辑对象的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)