gpt4 book ai didi

java.io.InvalidClassException 即使使用serialVersionUID

转载 作者:行者123 更新时间:2023-12-02 04:41:25 24 4
gpt4 key购买 nike

我是 RMI 新手。从java文档中我发现当本地和远程文件中的串行版本不匹配时会抛出InvalidClassException。但我写了一个虚拟类,即使静态创建的serialVersionUID,它也总是抛出InvalidClassException

  package com.sac.serialization;

import java.io.*;
import java.util.*;

class ClassA // non-serializable parent class
{
String parentname;

// absence of no-arg constructor
ClassA(String name) {
parentname = name;
}
}

class ClassB extends ClassA implements Serializable {
private static final long serialVersionUID = 1L;

ClassB(String name) {
super(name);
}
}

public class ClassC {
public static void main(String args[]) {
ClassB c1 = new ClassB("Sachin");
try {
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("employee.dat"));
out.writeObject(c1);
out.close();

ObjectInputStream in = new ObjectInputStream(
new FileInputStream("employee.dat"));
ClassA p = (ClassB) in.readObject();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

有人可以帮我找到根本原因吗?

最佳答案

ClassA 必须有一个不带参数的可访问构造函数。可序列化类的最近的不可序列化基类必须具有派生类可访问的不带参数的构造函数。请参阅Serialization Specification

关于java.io.InvalidClassException 即使使用serialVersionUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com