Java 从二进制文件读取时的ClassCastException

Java 从二进制文件读取时的ClassCastException,java,serialization,classcastexception,randomaccessfile,Java,Serialization,Classcastexception,Randomaccessfile,我在用一般方法读取二进制文件时得到一个java.lang.ClassCastException。 我试图用相同的方法读取两个不同的文件,但是我得到了异常,我不知道为什么 这是读取文件的通用方法中的代码: Read是类ReadBenary的方法部分 import java.io.ObjectInputStream; import java.io.FileInputStream; import java.io.IOException; public class ReadBinary{ p

我在用一般方法读取二进制文件时得到一个
java.lang.ClassCastException
。 我试图用相同的方法读取两个不同的文件,但是我得到了异常,我不知道为什么

这是读取文件的通用方法中的代码:
Read
是类
ReadBenary
的方法部分

 import java.io.ObjectInputStream;
 import java.io.FileInputStream;
 import java.io.IOException;

 public class ReadBinary{

private ObjectInputStream reader;

public boolean open(String name) {
    try {
        reader= new ObjectInputStream(new FileInputStream(name));
        return true;
    } catch (IOException exception) {
        System.err.println("Error");
        return false;
    }
}

public void close() {
    try {
        if (reader != null) {
            lector.close();
        }
    } catch (IOException exception) {
        System.err.println("Error");
    }
}

public <E> E read() {

    E object = null;
    try {
        object = (E) reader.readObject();
    } catch (ClassNotFoundException ex) {
        System.err.println("Class dont found");
        System.err.println(ex);
    } catch (IOException ex) {
        System.err.println("End of the file");
        System.err.println(ex);
    } catch (ClassCastException ex) {
        System.err.println("Class dont found");
    }
    return object;
}
这是在文件中写入对象的方法:

public <E> void escribir(E objeto) {
    try {
        escritor.writeObject(objeto);
    } catch (IOException exception) {
        System.err.print("Error rawr");
    }
}
公共无效描述(E对象){
试一试{
escritor.writeObject(objeto);
}捕获(IOException异常){
系统错误打印(“错误图纸”);
}
}
Bill
Customer
是两个独立的类。 当我试着运行程序时,它说,
Customer
不能被转换为
Bill


它表示错误发生在带有*的行中

ClassCastException意味着写入流的下一个对象实际上不是
Bill
。检查编写对象的代码,看看它实际上在编写什么类型的对象。某些System.out.PrintLN可能有助于准确查看正在写入的内容。

ClassCastException意味着写入流的下一个对象实际上不是票据。检查编写对象的代码,看看它实际上在编写什么类型的对象。一些System.out.println可能有助于准确查看正在编写的内容。

文件3
中似乎没有
Bill
对象。 要检查此更改
read()
,请执行以下操作:

public <E> E read() {
    Objject obj;
    E object = null;
    try {
          obj = reader.readObject();
          System.out.println(obj.getClass().getName())       
          object = (E) obj;
    } catch (ClassNotFoundException ex) {
        System.err.println("Class dont found");
        System.err.println(ex);
    } catch (IOException ex) {
        System.err.println("End of the file");
        System.err.println(ex);
    } catch (ClassCastException ex) {
        System.err.println("Class dont found");
    }
    return object;
}
public E read(){
Objject obj;
E object=null;
试一试{
obj=reader.readObject();
System.out.println(obj.getClass().getName())
object=(E)obj;
}捕获(ClassNotFoundException ex){
System.err.println(“未找到类”);
系统错误打印项次(ex);
}捕获(IOEX异常){
System.err.println(“文件结尾”);
系统错误打印项次(ex);
}捕获(ClassCastException例外){
System.err.println(“未找到类”);
}
返回对象;
}

查看实际类型。

file3
中似乎没有
Bill
对象。 要检查此更改
read()
,请执行以下操作:

public <E> E read() {
    Objject obj;
    E object = null;
    try {
          obj = reader.readObject();
          System.out.println(obj.getClass().getName())       
          object = (E) obj;
    } catch (ClassNotFoundException ex) {
        System.err.println("Class dont found");
        System.err.println(ex);
    } catch (IOException ex) {
        System.err.println("End of the file");
        System.err.println(ex);
    } catch (ClassCastException ex) {
        System.err.println("Class dont found");
    }
    return object;
}
public E read(){
Objject obj;
E object=null;
试一试{
obj=reader.readObject();
System.out.println(obj.getClass().getName())
object=(E)obj;
}捕获(ClassNotFoundException ex){
System.err.println(“未找到类”);
系统错误打印项次(ex);
}捕获(IOEX异常){
System.err.println(“文件结尾”);
系统错误打印项次(ex);
}捕获(ClassCastException例外){
System.err.println(“未找到类”);
}
返回对象;
}

查看实际类型。

什么是
ReadBinary
?它是如何读取文件的?
账单如何在文件中表示?您需要告诉我们这些类是什么,以及它们在层次结构中的位置。您需要发布异常。它确切地告诉您对象的类是什么。什么是
ReadBinary
?它是如何读取文件的?
账单如何在文件中表示?您需要告诉我们这些类是什么,以及它们在层次结构中的位置。您需要发布异常。它确切地告诉您对象的类是什么。