Java读取二进制文件的Appointment对象打印带类名大括号如何解决
问题根因
你当前看到的输出格式是Appointment类的toString()方法的返回值,现有代码中的toString()要么是IDE自动生成的带类名、大括号的键值对格式,要么是Object类的默认实现。只要你直接将Appointment对象传入对话框打印方法,Java会自动调用该对象的toString()方法,就会输出不符合预期的格式。
实现预期输出的修改方案
方案1:重写Appointment类的toString()(推荐,全局生效)
直接修改Appointment.java文件,新增或覆盖原有toString()方法,代码如下:
// 加到Appointment类内部即可 @Override public String toString() { return this.day + "," + this.hour + "," + this.name; }
修改完成后,原有弹出对话框的代码不需要做任何改动,直接传Appointment对象就会输出你需要的逗号分隔格式。
方案2:输出时手动拼接属性(局部生效,无需修改模型类)
如果你不想改动Appointment类的全局默认输出逻辑,只需要在弹出对话框的位置手动拼接属性即可。
假设你原有弹出代码类似:
JOptionPane.showMessageDialog(null, appointmentObj);
修改为:
// 若属性是private修饰,提前给三个属性补充对应的getDay()、getHour()、getName()方法即可 String outputText = appointmentObj.getDay() + "," + appointmentObj.getHour() + "," + appointmentObj.getName(); JOptionPane.showMessageDialog(null, outputText);
如果需要输出多个预约对象,遍历预约集合时按上述规则拼接每个对象的字符串,再汇总为总输出内容即可。
内容的提问来源于stack exchange,提问作者Matt Nguyen
相关产品推荐
相关产品推荐

