为何我的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
相关产品推荐
相关产品推荐

