Java Can';t比较子类中ArrayList的大小

Java Can';t比较子类中ArrayList的大小,java,arraylist,Java,Arraylist,我有一个带有ArrayList和2个子类的类 我在第一个子类中向ArrayList添加了另一个元素,但是当我在第二个子类中查找大小时,它仍然表示ArrayList的大小为0 类别: ArrayList <ClientManager> clientList = new ArrayList <ClientManager>(); 在第一个子类中,我添加了一个元素并检查大小是否确实增加了 第2子类: 实际代码: while (clientList.size() == 0);

我有一个带有ArrayList和2个子类的类

我在第一个子类中向ArrayList添加了另一个元素,但是当我在第二个子类中查找大小时,它仍然表示ArrayList的大小为0


类别:

ArrayList <ClientManager> clientList = new ArrayList <ClientManager>();
在第一个子类中,我添加了一个元素并检查大小是否确实增加了


第2子类:

实际代码:

while (clientList.size() == 0);
测试1:

while (clientList.size() == 0) {
    System.out.println(clientList.size());
}
测试2:

while (true) {
            System.out.println(clientList.size());
        }
在第二个子类中,我尝试比较大小,但由于某些原因,它没有确认更改

当我通过打印大小来测试它时,它总是打印“0”

但当我用infinte while循环打印时,它会正确打印尺寸


希望有人能帮忙。

因为当你实例化一个类的任何对象时,它会为每个非静态成员分配内存。因此,子类1对象有一个clientList,子类2对象有不同的对象用于不同的内存分配。

因为当您实例化类的任何对象时,它会为每个非静态成员分配内存。因此,您的子类1对象有一个clientList,而子类2对象有不同的对象用于不同的内存分配。

Cab您提供了更多代码吗?@Miha test1:while(clientList.size()==0)表示当大小不是0时,不要打印大小。所以你不应该期望打印出与零不同的东西。这就是为什么你会得到无穷循环的大小。@stat Polat你是对的。我没想过,但我想展示一下,在一种情况下,它的大小是正确的,而在另一种情况下,它的大小是不正确的。你能提供更多的代码吗?@Miha test1:while(clientList.size()==0)表示当大小不是0时,不要打印大小。所以你不应该期望打印出与零不同的东西。这就是为什么你会得到无穷循环的大小。@stat Polat你是对的。我没有考虑过这个问题,但我想说明的是,在一种情况下,它的大小是正确的,而在另一种情况下,它没有。除了-这会引入阴影和破坏多态性,通常不推荐使用。静态方法不是动态绑定的一部分。我认为静态成员在继承时应该与私有成员一样对待,以防止出现这种情况。是的。对不起,我忘了。绝对正确。编辑答案。我现在用的是静态的,如果以后可以重写的话,我会看看的。虽然它只起作用,但如果我将打印留在循环中。除了–这会引入阴影和中断多态性,通常不建议这样做。静态方法不是动态绑定的一部分。我认为静态成员在继承时应该与私有成员一样对待,以防止出现这种情况。是的。对不起,我忘了。绝对正确。编辑答案。我现在用的是静态的,如果以后可以重写的话,我会看看的。虽然它只起作用,但如果我把打印留在循环中。
while (true) {
            System.out.println(clientList.size());
        }