OIS 的 ClassCastException
ClassCastException at OIS
我在从 bat 文件中读取对象时收到 CCE。
装载机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,学生来自...我没有任何包裹或 class 或任何名为 LBags
字符串 [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
我在从 bat 文件中读取对象时收到 CCE。
装载机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,学生来自...我没有任何包裹或 class 或任何名为 LBags
字符串 [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