反序列化抛出 java.lang.ClassCastException
Deserializing throws java.lang.ClassCastException
我在 android 设备上保存序列化 class。将其传输到 win 10 PC 并通过以下方式加载文件:
fis = new FileInputStream(result.get(i));
ois = new ObjectInputStream(fis);
Object obj = ois.readObject();
class 在 Android 和 win 10 是:
public class ImgLogFile implements Serializable{
byte[] frame;
byte[] result;
String config;
public String getConfig(){
return config;
}
public byte[] getFrame() {
return frame;
}
public byte[] getResult() {
return result;
}
}
当我尝试将加载的对象投射到它的 class 中时,我得到:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class [Lde.mtt.smartiePlatform.ImgLogFile; cannot be cast to class de.mtt.smartiePlatform.ImgLogFile ([Lde.mtt.smartiePlatform.ImgLogFile; and de.mtt.smartiePlatform.ImgLogFile are in unnamed module of loader 'app')
我注意到一条路前面有"L",但不知道是什么意思。
我怎样才能解决这个问题 ?
[...] class [Lde.[...] cannot be cast to class de.[...]
[
表示数组。 [L
后面是引用类型的数组。
所以您已经序列化了一个数组,并试图将反序列化的对象转换为非数组的类型。
(此外,使用 Java 序列化也不是一个好主意。)
我在 android 设备上保存序列化 class。将其传输到 win 10 PC 并通过以下方式加载文件:
fis = new FileInputStream(result.get(i));
ois = new ObjectInputStream(fis);
Object obj = ois.readObject();
class 在 Android 和 win 10 是:
public class ImgLogFile implements Serializable{
byte[] frame;
byte[] result;
String config;
public String getConfig(){
return config;
}
public byte[] getFrame() {
return frame;
}
public byte[] getResult() {
return result;
}
}
当我尝试将加载的对象投射到它的 class 中时,我得到:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class [Lde.mtt.smartiePlatform.ImgLogFile; cannot be cast to class de.mtt.smartiePlatform.ImgLogFile ([Lde.mtt.smartiePlatform.ImgLogFile; and de.mtt.smartiePlatform.ImgLogFile are in unnamed module of loader 'app')
我注意到一条路前面有"L",但不知道是什么意思。 我怎样才能解决这个问题 ?
[...] class [Lde.[...] cannot be cast to class de.[...]
[
表示数组。 [L
后面是引用类型的数组。
所以您已经序列化了一个数组,并试图将反序列化的对象转换为非数组的类型。
(此外,使用 Java 序列化也不是一个好主意。)