考虑下面的代码,尝试将Product对象添加到productList中,该对象是Product[]类型的数组。

public void addItem(Product product) {

    for (Product p : productList) {
        if (p != null){
            p = product;
        }
    }

    System.out.println(productList[0]);  // This yields null.

}


如注释一样,打印结果为null。为什么未设置产品?

更新:我已经在!= null子句中运行了debug-printouts,对象和该子句的其余部分都正常运行。

最佳答案

在for-each-loop中,变量p是一个临时变量,productList的内容将分配给该临时变量。因此,您总是只分配临时变量,而不是分配给列表中的项目。

您可能想要这样:

for (int i = 0; i < productList.length; i++)
{
    if (productList[i] == null)
    {
        productList[i] = product;
        break;
    }
}


如果没有break,则将product分配给null的每个项目(实际上最好使用boolean来处理循环中断,但这也可以)

10-06 03:28