我有一个访问数组的问题,该数组在其类中定义了非静态。
这个数组的元素完全被另一个类添加(称之为“add”),所以我也无法访问这个类。在我的课程中,我需要从“A”类(具有数组)中获取数组,该数组由“add”填充。因为它不是静态的,当我创建这个“A”类的新属性时,使新对象忘记填充一个。
我的问题;有没有办法让这个非静态数组不丢失它的元素?
答案 0 :(得分:1)
很难从你的描述中看出来,但也许你只需要在包含你想要的数组的类中添加一个'getter'方法,并在你想要访问的类中包含该数组的对象上调用该方法来自。
的数组即
public 'ArrayType' getArray() {
return array;
}
将“ArrayType”替换为数组类型,将“array”替换为数组名称。
这将为您提供对数组的引用,以便您可以对其中的内容执行操作。
如果您还不知道,当您需要从另一个类访问对象的实例变量时,这是相当标准的做法。
答案 1 :(得分:0)
因为它不是静态的,所以当我创建这个“A”类的新属性时,请创建新对象,以免忘记填充。
是的 - 您需要添加值的实例。我们无法告诉您如何做到这一点,因为我们对您的代码知之甚少(毕竟,您还没有展示任何代码)。它是一个数组的事实是无关紧要的 - 实例变量的重点是每个实例都有自己的变量集,以表示该对象的状态。如果您需要特定对象的状态,则需要对该对象的引用。
顺便说一句,您通常不应该直接访问不同类的变量 - 变量应该是私有的,具有在适当时访问数据的属性。 (不意味着每个变量都有一个属性。通常你根本不想直接公开这个值 - 相反,你暴露了作用于整个对象的方法。这很难更具体而不知道你的对象代表什么。)