我创建了一个Person对象,它实现了Serializable接口,在其构造函数中包含fname,lname,phone,address,并且我将这个类的对象存储在“.dat”文件中的流中,我想要在GUI上显示这些联系人,所以当我尝试将人物转换成字符串时,它会给出ClassCastException,如果有人帮助我,我将感激不尽。
这是一个构造函数:
public Person(String fName, String lName, String add, String ph) {
//super();
this.fName = fName;
this.lName = lName;
this.add = add;
this.ph = ph;
}
这是GUI类代码:
public void windowOpened(WindowEvent e) {
FileInputStream fis;
ObjectInputStream ois;
try {
fis = new FileInputStream("person.dat");
ois = new ObjectInputStream(fis);
Person p = (Person) ois.readObject();
String obj = (String) p.toString(); // giving error at this line
StringTokenizer str = new StringTokenizer(obj, " ");
textField.setText(str.nextToken());
textField_3.setText(str.nextToken());
textArea.setText(str.nextToken());
// System.out.println(p);
ois.close();
fis.close();
} catch (Exception ee) {
System.out.println("Cannot Read File" + ee.getMessage());
ee.printStackTrace();
}
}
答案 0 :(得分:5)
ClassCastException更有可能在这里
Person p = (Person) ois.readObject();
在这一行中,演员阵容是多余的,你可以删除它,这样就不会发生了
String obj = (String) p.toString();
与
相同String obj = p.toString();
但是,如果您没有运行代码的最新副本,那么您的程序可能无法正常执行此操作。