gpt4 book ai didi

java - 尝试使用反序列化从另一个类加载数据

转载 作者:行者123 更新时间:2023-12-01 11:38:15 26 4
gpt4 key购买 nike

我正在尝试从保存在另一个类中的文本文件加载数据。以下是我用来加载文件加载器并选择我想要从中获取数据的文件的代码:

public static Customer browse()
{
Customer browse = null;

JFileChooser chooser = new JFileChooser();
int chooserOption = chooser.showSaveDialog(null);
chooserOption = JFileChooser.APPROVE_OPTION;

try {
File file = new File (chooser.getSelectedFile().getAbsolutePath());
ObjectInputStream input = new ObjectInputStream(new FileInputStream(file));


browse = (Customer) input.readObject();
input.close();
return browse;
} catch (IOException ex) {
System.out.println(ex.getMessage());
} catch (ClassNotFoundException ex) {
System.out.println(ex.getMessage());
}
return null;
}

这是我用于加载数据的按钮的代码:

     Consultant consload = new Consultant();
this.jTextField4.setText(consload.getConsultantID());

Customer custload = Customer.browse();
custload.setCID(consload.ConsultantID);
this.jTextField4.setText(custload.getCID());

数据是从顾问类中保存的,我不需要将其加载到客户类中。加载程序正在工作,但是当我选择文件时出现此错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Consultant cannot be cast to Customer
at Customer.browse(Customer.java:162)
at CreateCustomer.jButton1ActionPerformed(CreateCustomer.java:202)
at CreateCustomer.access$400(CreateCustomer.java:11)
at CreateCustomer$5.actionPerformed(CreateCustomer.java:83)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

你认为我缺少一些代码吗?因为运行代码之前没有错误。

最佳答案

这个错误是非常不言自明的:

Consultant cannot be cast to Customer

显然,当您序列化数据时,它会保存Consultant 的实例。类,而不是 Customer类(class)。因此,当您尝试读取该文件时,ObjectObjectInputStream 返回返回 Consultant ,不是Customer .

我认为您应该将调试工作重点放在保存过程上,而不是加载过程上。

关于java - 尝试使用反序列化从另一个类加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29783931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com