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

Java 将Person对象强制转换为给定类强制转换异常的字符串,java,Java,我制作了一个Person对象类,它正在实现可序列化接口,在其构造函数中包含fname、lname、phone、address,我将这个类的对象按流存储在“.dat”文件中,我想在GUI上显示这些联系人,所以当我尝试将Person转换为字符串时,它会给出ClassCastException,如果有人能帮助我,我将不胜感激 这是一个构造函数: public Person(String fName, String lName, String add, String ph) { //super(

我制作了一个Person对象类,它正在实现可序列化接口,在其构造函数中包含fname、lname、phone、address,我将这个类的对象按流存储在“.dat”文件中,我想在GUI上显示这些联系人,所以当我尝试将Person转换为字符串时,它会给出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();
    }
}

更可能的是ClassCastException在这里

Person p = (Person) ois.readObject();
在这一行中,强制转换是多余的,您可以删除它,这样就不会在这里发生

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

String obj = p.toString();

但是,如果您没有运行最新的代码副本,则可能是您的程序没有执行您认为它正在执行的操作。

更有可能是ClassCastException在这里

Person p = (Person) ois.readObject();
在这一行中,强制转换是多余的,您可以删除它,这样就不会在这里发生

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

String obj = p.toString();

但是,如果您没有运行代码的最新副本,则可能是因为您的程序没有执行它认为正在执行的操作。

您是否覆盖了
toString()
?另外,为什么要强制转换和调用
toString()
?toString()通常会返回一个字符串对象。。。你不需要投这个。如果重写了toString方法,请发布它好吗?哪个类名出现在
ClassCastException
的消息中?
toString()
返回一个字符串,并且您不能重写它以返回其他内容,因此该语句不可能产生异常。(强制转换是多余的,但无害的。)正如Peter所建议的,错误更可能来自readObject()调用的情况。我想如果你看的话,异常会告诉你什么被转换成什么。我正在调用toString()将person对象转换成string并在GUI中显示它,例如FirstName:xxxx LastName:yyyy Phone:3333 Address:P-8是否覆盖了
toString()
?另外,为什么要强制转换和调用
toString()
?toString()通常会返回一个字符串对象。。。你不需要投这个。如果重写了toString方法,请发布它好吗?哪个类名出现在
ClassCastException
的消息中?
toString()
返回一个字符串,并且您不能重写它以返回其他内容,因此该语句不可能产生异常。(强制转换是多余的,但无害的。)正如Peter所建议的,错误更可能来自readObject()调用的情况。我想如果你看的话,异常会告诉你什么被转换成什么。我调用toString()将person对象转换成字符串并在GUI中显示它,例如FirstName:xxxx LastName:yyyy Phone:3333 Address:P-8@Asad我没想到会这样,这就是为什么我在回答中没有提到这个问题的原因。Peter这是我在stackoverflow上发布的第一个问题,所以我在你的部分的其他帖子中回答了这个问题,很抱歉让你感到困惑。你帮了我,解决了我的问题,谢谢你的好意。@Asad我认为不会,这就是为什么我在回答中没有提到它。Peter这是我在stackoverflow上发布的第一个问题,所以我在你的部分中回答了其他帖子,很抱歉让你困惑。你帮了我,解决了我的问题,谢谢你这么好。