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

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

}

最佳答案

您遇到这种情况是因为分配的完成方式:

x=x;

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

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

Second.x = x;

关于java - 如何通过不同Java类中的方法更改对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967507/

相关文章:

java - 如何使用mybatis调用oracle存储过程(基于注解。)

java - Selenium WebDriver 错误? ChromeDriver 设置值时不关注字段?

java - 运行基本 Spring Batch 示例时出错 - 由 : java. lang.ClassNotFoundException : org. hsqldb.jdbcDriver 引起

java - 如何将工具栏样式设置为 Both_horiz?

java - 将InputStream写入文件

java - 如何使用 Java 中的 Firebase Admin 将文件上传到 Firebase 存储?

java - Magnolia 富文本字段

java - Android 等待 Text to Speech OnInit 被调用

java - 加密 Ant 构建文件

java - 如何在内部类中调用继承类的构造函数