所以我试图从不同类中的方法编辑对象的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;
}
}
答案 0 :(得分:5)
由于分配的完成方式,您遇到了这个问题:
x=x;
这样做会触发警告信息"对变量x的赋值没有效果"。这是因为您并未引用静态变量x
而是引用参数本身。
每个非静态变量都存在于对象的上下文中。在这种情况下,x
是静态的,因此在静态上下文中也不可能使用this.x = x;
。正确的方法是
Second.x = x;