java - 如何从一个 java 类中更改另一个 java 类中的变量,然后从第三个 java 类访问更改后的变量?

标签 java

假设我有 3 个 java 类,A、B 和 C。A 类有一个名为 num 的 int 变量,该变量等于 3。我希望能够将 num 从 B 类更改为另一个数字(例如,45) ,然后从类 C 访问该变量,使其等于 45。我该怎么做?

//First Class
public class A
{
    public int num;

    public A() {
        num = 3;
    }

    public void setNum(int newNum) {
        num = newNum;
    }

    public int getNum() {
        return num;
    }
}

//Second Class
public class B
{
    public static void main(String[] args) {
        A a = new A();
        C c = new C();

        System.out.println(a.getNum());

        a.setNum(45);

        System.out.println(a.getNum());

        c.printStuff();
    }
}

//Third Class
public class C
{
    public void printStuff() {
        A a = new A();

        System.out.println(a.getNum());
    }
}

前两个 print 语句输出预期的 3 和 45,但 C 类中的 print 语句仍然输出 3,即使我将 B 类中的 num 值更改为 45。

最佳答案

之所以得不到你想要的结果,是因为你在类C中创建了类A的新实例,并且它有自己的值,即 3。更改类 B 中定义的类 A 实例的值不会影响这个新实例。

请注意,您对 A 类调用了两次 new 方法,因此您有两个单独的实例。

您可以尝试此代码以获得您想要的结果:

//First Class
class A
{
    public int num;

public A() {
    num = 3;
}

public void setNum(int newNum) {
    num = newNum;
}

public int getNum() {
    return num;
}
}

//Second Class
public class B
{
public static void main(String[] args) {
    A a = new A();
    C c = new C();

    System.out.println(a.getNum());

    a.setNum(45);

    System.out.println(a.getNum());

    c.printStuff(a);
}
}

//Third Class
class C
{
public void printStuff(A a) {
    //A a = new A();

    System.out.println(a.getNum());
    }
}

关于java - 如何从一个 java 类中更改另一个 java 类中的变量,然后从第三个 java 类访问更改后的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53901806/

相关文章:

java - 如何检测屏幕左侧或右侧是否执行了运动事件手势?

java - 我在树莓派上运行 debian wheezy 的 Java 蓝牙服务器需要 bluecove native 库 - 我在哪里可以找到它?

java - OrdImage LoadFromFile 异常

java - 离线读取和删除加密文件,无需使用 Activity 结果

java - 尝试 printf 日期时出现 IllegalFormatConversionException d != java.lang.Integer?

java - 如何在微服务的多个实例之间维护 SseEmitters 列表?

java - 使用 JavaFX 将图像拖到窗口外

java - 使用 IN 的格式错误的查询

java - 如何从 ArrayList<String[]> 获取值

java - 在 Android 中使用搜索栏