考虑以下代码,尝试将 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
子句中运行了调试打印输出,并且该对象和该子句的其余部分都运行正常。
最佳答案
在 for-each 循环中变量 p
是一个临时变量,其中 productList
的内容将被分配。因此,您始终只是分配临时变量,而不是分配给列表内的项目。
您可能想要这个:
for (int i = 0; i < productList.length; i++)
{
if (productList[i] == null)
{
productList[i] = product;
break;
}
}
没有break
你会分配 product
到 null
的每个项目(实际上最好使用 boolean
来处理循环中断,但这也有效)
关于Java - 未设置对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21370464/