我是靠谱客的博主 会撒娇黑猫,最近开发中收集的这篇文章主要介绍java反序列化异常——InvalidClassException,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

序列化异常:
Exception in thread “main” java.io.InvalidClassException: cn.itcast.day012.demo08Serializable.Person; local class incompatible: stream classdesc serialVersionUID = -5145207523530997190, local class serialVersionUID = -2071565876962058344
序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。   对象 – 流数据(ObjectOutputStream)

反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。流数据 – 对象(ObjectInputStream)

序列化流和反序列化流不同于字节流 字符流 内存字节流,这些都是把字符串写入/读取文件,序列化流和反序列化流可以将对象写入/读取文本文件中.
但是我们要注意的是,写入和读取的文件要实现Serializable这个接口,当然这个接口是没有任何方法的,直接implements就好,类似于这种没有任何方法的接口被称为标记接口.

解决方法
统一所有serialVersionUID,代码如下:

private static final long serialVersionUID = -2071565876962058344L;
Person类:

package cn.itcast.day012.demo08Serializable;
import java.io.Serializable;  

public class Person implements Serializable{
    private static final long serialVersionUID = -2071565876962058344L;
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + ''' +
                ", age=" + age +
                '}';
    }
    public Person() {
    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

序列化流

 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("day012-code\object_out.txt"));
 oos.writeObject(new Person("张三",18));
 oos.close();

反序列化流

   public static void main(String[] args) throws IOException, ClassNotFoundException {
        //
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("day012-code\object_out.txt"));
        Object obj = ois.readObject();
        ois.close();
        System.out.println((Person)obj);
    }

最后

以上就是会撒娇黑猫为你收集整理的java反序列化异常——InvalidClassException的全部内容,希望文章能够帮你解决java反序列化异常——InvalidClassException所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部