-2

我正在尝试使用 ObjectOutputStream 和 FileOutputStream 序列化对象,但是显示类名错误。

JFileChooser fc = new JFileChooser();
 NewClientClass AddClient = new NewClientClass(IDNumber.getText(), FirstName.getText(), LastName.getText(), Address.getText(), DateOfBirth.getText(), Profession.getText());
       try {   
        int returnVal = fc.showSaveDialog(null);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fc.getSelectedFile().getAbsoluteFile()));
            out.writeObject(AddClient); //the application crashes.
            out.close();
            JOptionPane.showMessageDialog(null, "Successfully Saved");
        }

如您所见,我正在声明一个新客户端并从文本框中获取数据。当我检查 tru 调试时,数据已正确存储,唯一的问题是将对象写入文件时。

请问有什么帮助吗?

谢谢

4

1 回答 1

1

如果没有进一步的细节,最可能的罪魁祸首是缺少来自以下的Serializable接口的实现NewClientClass

类的可序列化性由实现 java.io.Serializable 接口的类启用。未实现此接口的类将不会对其任何状态进行序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于识别可序列化的语义。

编辑:

假设你有这样的事情:

public class NewClientClass
{
    public NewClientClass (String idNumber, String firstName, String lastName, String address, String dateOfBirth, String profession)
    {
         ...
    }

}

你只需要让它像这样:

public class NewClientClass implements Serializable
{
    public NewClientClass (String idNumber, String firstName, String lastName, String address, String dateOfBirth, String profession)
    {
         ...
    }
}

这应该是您需要做的所有事情(不要忘记导入包含该接口的包)。该Serializable界面将标记您的类以进行序列化。

同样,你没有提到你得到了什么异常,所以这纯粹是推测性的。

于 2013-07-16T11:52:19.267 回答