假设我有 3 个类:A
、Data
和 B
我从类 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/