java - 从 Java 中的两个不同类设置和获取静态变量

标签 java class variables methods overwrite

假设我有 3 个类:ADataB

我从类 A 传递一个变量,该变量将传递的变量设置为类 Data 中的私有(private)变量。

然后在 B 类中,我想调用已更改的特定变量。

我也是

Data data = new Data();
data.getVariable();

然后它将返回 null,因为在类 Data 中我将变量初始化为空(例如:int v;),我认为类 B 正在初始化一个全新的类并将值重置为默认值,但我不知道如何解决这个问题。

我知道变量设置正确,因为在 A 类中,如果我执行 data.getVariable(),它将打印设置的变量。

A:

Data data = new Data();
int d = 1;
data.setVariable(d);

数据:

private static int b;

public void setVariable(int s)
{
    b = s;
}

public int getVariable()
{
    return b;
}

B 类:

Data data = new Data();
private int v; 

v = data.getVariable();
System.out.println(v);

这将打印出 0 而不是实际值

最佳答案

当您在 A 类中实例化一个 Data 对象,并在 B 类中实例化另一个 Data 对象时,它们是 两个不同的实例 数据类。默认情况下,它们都将 d 实例化为 0。然后在类 A 中的实例上调用 setVariable 并将值 1 传递给它;但是 B 类中的实例仍然为 0。为了更改 B 类中实例的值,您需要对 B 类中的实例调用 setVariable

您正在寻找的似乎是静态成员。静态成员在同一类的所有实例中都是相同的。只需将 static 关键字放在您要使用它的方法或字段之前。静态成员和字段通常使用声明它们的类的名称进行访问(即 MyClass.doMethod())。例如:

类数据(更新):

private static int b;

public static void setVariable(int s)
{
    b = s;
}

public static int getVariable()
{
    return b;
}

A 类:

Data.setVariable(d);

B 类:

v = Data.getVariable();
System.out.println(v);

关于java - 从 Java 中的两个不同类设置和获取静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8250153/

相关文章:

c++ - 同一个函数在不同的时间调用不同的类

date - 提示:日期,%Sysfunc(year(&myvar.));

java - 存储库未扩展 JpaRepository

java - 如何在没有应用程序 ID 的情况下访问默认应用程序?

c++ - 在 C++ 中重载运算符时,为什么 T* 优于 bool?

java - 如何连接两个不同的类

c - 将值从一个函数传递给C中的另一个函数

json 的 Javascript 变量替换

java - 以编程方式创建任务队列

java - 应该同步哪些代码块?