Java 尝试进行反序列化时键入强制转换错误
当我将Customer类与调用它的函数放在同一个源包中时,为什么会出现错误“java.lang.ClassNotFoundException:Customer”Java 尝试进行反序列化时键入强制转换错误,java,typecasting-operator,Java,Typecasting Operator,当我将Customer类与调用它的函数放在同一个源包中时,为什么会出现错误“java.lang.ClassNotFoundException:Customer” public void getEmployee() { Customer cu =null; try { Customer e = new Customer(); FileInputStream fileIn = new FileInputStream("Customers.ser");
public void getEmployee() {
Customer cu =null;
try {
Customer e = new Customer();
FileInputStream fileIn = new FileInputStream("Customers.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
cu =(Customer) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
return;
} catch (ClassNotFoundException c) {
System.out.println("Employee class not found");
c.printStackTrace();
return;
}
}
如果函数没有返回任何内容,为什么要将其称为getter?不过,我可以马上指出代码中的一些错误。
fileIn.close()代码>行是冗余的。流已由.close()中的关闭。
。最重要的是,你不需要那些return代码>语句。基本上,您可以将代码简化为:
public void getEmployee(){
试一试{
客户e=新客户();
FileInputStream fileIn=newfileinputstream(“Customers.ser”);
ObjectInputStream in=新的ObjectInputStream(fileIn);
Customer cu=(Customer)in.readObject();
in.close();
}捕获(IOException | ClassNotFoundException e){
e、 printStackTrace();
}
}
编辑
请稍候。如果您得到的是“java.lang.ClassNotFoundException:Customer”
,那么问题不在这里。它很可能在序列化部分。您可能正在尝试将一个空白文件强制转换到客户。在文本编辑器中打开保存的Customers.ser
。如果您没有看到存储的数据的外观,则可能是序列化问题。我认为我们无法从您在此处显示的内容中了解您的问题所在。理想情况下,您应该显示此方法来自的整个文件以及文件名。还提供Customer类的整个文件。如果这些文件太大而不能这样做,那么就删掉不重要的信息,但保留所有的结构,因为这对这个问题很重要。然后,向我们解释这两个文件在磁盘上的相对位置。“同一个源程序包”是否意味着这两个文件在同一个目录中?这令人困惑。你能告诉编译器指出哪一行代码吗?