我正在从bat文件中读取对象时获取CCE。
loader class:
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
答案 0 :(得分:0)
字符串[LBags.Student
是Array of Bags.Student
的内部类型签名。第一个字符[
表示数组,L
表示引用类型。
因此,该消息表示您正在尝试将Bags.Student
数组投射到Bags.Student
,这显然是不可能的。因此,序列化数据包含数组,而不是标量对象。
JNI Documentation中提供了完整的类型签名列表。为了完整起见,这里是从该文档中复制的列表:
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