将Person对象转换为给出类强制转换异常的字符串

时间:2013-04-26 15:05:54

标签: java

我创建了一个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();
    }
}

1 个答案:

答案 0 :(得分:5)

ClassCastException更有可能在这里

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

在这一行中,演员阵容是多余的,你可以删除它,这样就不会发生了

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

相同
String obj = p.toString();

但是,如果您没有运行代码的最新副本,那么您的程序可能无法正常执行此操作。