考虑下面的代码,尝试将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
来处理循环中断,但这也可以)