0

我已经创建了一个实现 Serializable 接口的 Person 对象类,它在其构造函数中包含 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();
    }
}
4

1 回答 1

5

ClassCastException 更有可能在这里

Person p = (Person) ois.readObject();

在这一行中,演员表是多余的,您可以将其删除,这样就不会在这里发生

String obj = (String) p.toString();

是相同的

String obj = p.toString();

但是,如果您没有运行代码的最新副本,则可能是您的程序没有按照它认为的那样做。

于 2013-04-26T15:09:31.937 回答