从另一个类访问非静态变量

问题描述:

我有一个访问数组的问题,该数组在其类中定义了非静态变量。从另一个类访问非静态变量

这个数组的元素完全由另一个类添加(称为“add”),所以我无法达到这个类。在我的课,我需要从“添加”填充“A”类(其中有数组)的数组。由于它不是静态的,所以当我使这个“A”类的新属性成为新对象时,忘记填充一个。

我的问题;有没有办法让这个非静态数组不失去它的元素?

+0

[非静态变量不能从静态上下文(java)]引用的可能重复](http://*.com/questions/2559527/non-static-variable-cannot-be-referenced-from-a -static-context-java) – EJP 2012-03-31 08:57:38

因为它不是静态的,所以当我使这个“A”类的新属性成为新对象时,忘记填充一个。

嗯是的 - 你需要添加值的实例。我们不能告诉你怎么做,因为我们对代码的了解不够多(毕竟,你还没有看到它)。它是一个数组的事实是无关紧要的 - 实例变量的全部重点是每个实例都有自己的一组变量来表示该对象的状态。如果您需要特定对象的状态,则需要对该对象的引用。另外,你通常不应该直接访问不同类的变量 - 变量应该是私有的,并且在适当的时候使用属性来访问数据。 (不是意味着每个变量都有一个属性,通常你不想直接暴露这个值 - 相反,你需要暴露作用于整个对象的方法。知道你的对象是什么意思代表)

很难从你的描述中知道,但也许你只需要添加一个'getter'方法到包含你想要的数组的类中,然后在包含要从中访问数组的类的数组。

public 'ArrayType' getArray() { 
    return array; 
} 

与您的阵列的类型和“数组”与你的阵列的名称替换“数组类型”。

这会给你对数组的引用,以便你可以对它内部的内容执行操作。

如果您还没有意识到,当您需要从另一个类访问对象的实例变量时,这是相当标准的做法。

+0

我最初的想法是一个getter,但我有一种感觉,它也可能是一个仅仅使数组变成静态的情况。对我来说,像user1304752试图从同一个类的两个实例中访问一个实例变量,并希望返回相同的对象,这听起来像是一个静态变量的完美情况。 – charlemagne 2012-03-31 08:47:06

+0

@zandomatter:不,这听起来像是两个班级意识到同一实例的完美情况。没有迹象表明这意味着成为真正的全球性国家。 (我同意,虽然访问似乎不是问题。) – 2012-03-31 10:34:14