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

Java打印自定义类输出为类名+哈希码 如何修改为自定义字符串格式

问题原因
  • 直接调用System.out.println(factory.getItems())实际是打印Item数组对象的默认toString返回值,输出的是数组的类型+内存哈希地址,并非数组内部的Item内容
  • Item类没有重写toString方法,就算遍历数组直接打印Item对象,默认也只会输出对象的内存地址,不会展示name、category的实际值
  • 你贴出的Item类存在语法错误:构造方法写在了类的大括号外部,运行时会直接报错,需要先修正该问题
解决步骤

1 修正Item类语法并添加toString重写

修改后的Item类代码如下:

public class Item {
    String name;
    String category;

    // 将构造方法移到类内部
    public Item(String name, String category) {
        this.name = name;
        this.category = category;
    }

    public String getName() {
        return name;
    }

    public String getCategory() {
        return category;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    // 重写toString,自定义Item对象的打印内容
    @Override
    public String toString() {
        return "商品名:" + name + ",分类:" + category;
    }
}

2 修改打印Item数组的逻辑

不能直接打印数组对象,需要遍历数组输出每个Item的内容,修改主程序的ispisTvornica方法:

public static void ispisTvornica(Factory factory){
    System.out.println("Naziv: " + factory.getName());
    System.out.println("Web adresa: " + factory.getAddress());
    System.out.println("Odabrani artikli: ");
    // 遍历Item数组逐个打印
    for(Item item : factory.getItems()){
        // 因为已经重写了Item的toString,直接打印即可输出内容
        System.out.println("- " + item);
    }
}

如果需要把所有商品内容拼在一行打印,可以调用JDK自带的Arrays.toString()方法,先在主程序顶部导入包:

import java.util.Arrays;

打印代码改为:

System.out.println("Odabrani artikli: " + Arrays.toString(factory.getItems()));

可选:给Factory类也重写toString方法

如果希望直接打印Factory对象就能输出全部信息,可以在Factory类中添加toString重写:

@Override
public String toString() {
    return "工厂名称:" + name +
            ",地址:" + address +
            ",商品列表:" + Arrays.toString(items);
}

配置完成后,你直接调用System.out.println(factory)就可以打印该工厂的所有信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:57:05