Java - 未设置对象?

标签 java

考虑以下代码,尝试将 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你会分配 productnull每个项目(实际上最好使用 boolean 来处理循环中断,但这也有效)

关于Java - 未设置对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21370464/

相关文章:

java - emma是否支持多个进程并发写入 session 文件?

java - 从类路径加载类文件

java - 舍入误差近似值

java - 对嵌套元素运行 hql 查询返回 "unexpected AST node"

java - Spring CORS 设置

java - 自动扫描指南

java - Spring Integration 代理网关上的入站转换器

java - Spring MVC 绑定(bind)问题

java - 锁定 WebLogic 集群中的 Java 对象或 Java 方法

java - 如何在java中生成满足泊松分布的随机时间戳