Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列表报告中的所有对象都是相同的java?_Java_List - Fatal编程技术网

列表报告中的所有对象都是相同的java?

列表报告中的所有对象都是相同的java?,java,list,Java,List,Im使用java中的对象列表(区域),我将其定义为: public static List<Area> areaList = new ArrayList<Area>(); 然后我访问列表,检查其中的每个区域,如下所示: for (int i = 1; i < areaList.size(); i++) { System.out.println(areaList.get(i).somevariable)); } (这里什么是重要的) 但它返回列表中

Im使用java中的对象列表(区域),我将其定义为:

    public static List<Area> areaList = new ArrayList<Area>();
然后我访问列表,检查其中的每个区域,如下所示:

for (int i = 1; i < areaList.size(); i++) {
    System.out.println(areaList.get(i).somevariable));
}
(这里什么是重要的)

但它返回列表中的所有对象,它们的值都是相同的,即上次访问的对象的值


有人能告诉我哪里出了问题吗?

这不是解决方案,但您应该从
i=0
开始循环。您可以尝试打印每个对象的
hashcode()
,看看它们是否真的相同,前提是不被覆盖


同时,您要从
1
开始迭代,您需要从
0
开始迭代整个集合。

确实要从i=1开始而不是从i=0开始吗?如果您只使用两个对象运行测试,这可能与此相关。我查看了您上传的代码,发现了错误

您将类
区域中的每个字段声明为static

public class Area {
    public static int posx;
    public static int posy;
    public static int posz;
}
因此,所有实例的字段都是相等的,因为类
区域
只有一个
posx
字段(详细信息请阅读答案)。正因为如此,每次写信给,e。g、 ,
posx
覆盖旧值。删除
static
关键字,然后类
区域的所有实例都有自己的实例变量

您还应该考虑将它们私有化,并提供getter和setter方法


我还没有详细查看您的代码,但是有几个地方使用了
静态变量。您应该重新检查此问题。

错误不在您显示的代码中。请创建一个暴露错误的完整但最小的示例(请参阅)。如何填写此列表?
px
py
pz
radius
wl
从哪里来?请注意:Java使用基于0的索引(请参见for循环)。是否有意跳过元素0?还考虑使用每个构造,<代码>(区域A:AeRealGeor){PrtLn(A.SoMeVabrabl);}变量不太重要,就像程序的其他部分一样,它是一个BukKIT插件,我已经在这里上传了完整的源代码:它包含3个类,但是代码的其他部分你需要什么?我已经给了你代码中唯一写入列表的部分?我看了一遍代码。你可以在下面找到我的答案。我认为ArrayList应该只查看equals方法。当然,hashCode方法应该相应地编写,但这并不是这里的错误来源,但是
hashCode
提供了一些打印出来的内容,以查看它们是否实际引用了同一个对象。我很抱歉,这是在我尝试了一些不同的东西之后。对了,谢谢,我需要修改static,这是有益的:D
areaList.get(i)
public class Area {
    public static int posx;
    public static int posy;
    public static int posz;
}