0

当我从 bat 文件中读取对象时,我得到了一个 CCE。

加载器类:

public static void loader()throws IOException, ClassNotFoundException{
  try{
    FileInputStream fis = new FileInputStream("students.dat");
    ObjectInputStream ois = new ObjectInputStream(fis);
    while(true){
      try {
       stud = ois.readObject();
       student = (Student) stud;
       studentBag.add(student);
      }catch(EOFException e){
         break;
    }  
   i++;
  }
 ois.reset();
 ois.close();
 fis.close();
}catch(FileNotFoundException e) {
 System.out.println("File not found");
}

我得到的 CCE 错误是:student = (Student) stud;

我得到的具体错误代码是由以下原因引起的:java.lang.ClassCastException:[LBags.Student; 不能转换为 Bags.Student

我也不确定它从哪里得到 LBags,学生来自......我没有任何包或类或任何名为 LBags 的东西

4

1 回答 1

0

该字符串[LBags.StudentArray of Bags.Student. 第一个字符[表示数组,L表示引用类型。

因此,消息是说您正在尝试将数组Bags.Student转换为 a Bags.Student,这显然是不可能的。因此,您的序列化数据包含一个数组,而不是一个标量对象。

JNI 文档中提供了类型签名的完整列表。为了完整起见,这里是从该文档复制的列表:

Type Signature

Z                          boolean
B                          byte
C                          char
S                          short
I                          int
J                          long
F                          float
D                          double
Lfully-qualified-class;    object of class
[type                      Array of type
于 2016-05-07T03:34:08.837 回答