You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的Java Stream代码输出类似streamsapi.product@5b480cf9的内容?

问题解决:Stream API过滤后输出对象哈希码而非产品信息

调试使用Stream API过滤集合数据的代码,预期得到符合条件的两个product对象的详细信息列表,但实际输出为:

streamsapi.product@3feba861
streamsapi.product@5b480cf9

问题根源

你的product类没有重写toString()方法,当执行System.out.println(product)时,默认调用Object类的toString()实现,输出格式为全限定类名@哈希码,因此无法展示产品的具体属性信息。

解决方案

在product类中重写toString()方法,自定义对象的输出格式,这样打印对象时就能显示产品的id、名称和价格等内容。

手动重写toString()方法

修改后的product类代码如下:

class product{
    private int id;
    private String name;
    private float price;
    public product(int id, String name, float price) {
        super();
        this.name = name;
        this.id = id;
        this.price = price;
    }
    // 原有getter、setter方法
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public float getPrice() { return price; }
    public void setPrice(float price) { this.price = price; }

    // 重写toString()
    @Override
    public String toString() {
        return "product{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}

使用Lombok简化代码(可选)

如果项目中引入了Lombok依赖,只需在product类上添加@ToString注解,即可自动生成标准的toString方法:

import lombok.ToString;

@ToString
class product{
    // 原有代码保持不变
}

修改后运行代码,输出将变为符合预期的产品信息:

product{id=2, name='Dell', price=3500.0}
product{id=3, name='Asus', price=4500.0}

内容的提问来源于stack exchange,提问作者jeev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:22:36