美文网首页
serialVersionUID是干什么用的

serialVersionUID是干什么用的

作者: 海边的贝壳林 | 来源:发表于2017-09-14 20:18 被阅读0次

    序列化

    使Java的对象可以序列化, 但是为什么需要这个id呢. 这个序列化的对象, 在写入(序列化)和读取(反序列化)的时候有可能存在差异. 那么Java就用这个serialVersionUID值是否相同来判断序列化的对象是否一致. 如果两个对象的serialVersionUID都不一致, 那肯定就没办法序列化了.

    例子

    import java.io.Serializable;
    
    public class Person implements Serializable {
    
        private static final long serialVersionUID = 7371845487964803604L;
    
        private String          name;
    
        private int             id;
    
        public Person(String name, int id) {
            this.name = name;
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", id=" + id +
                    '}';
        }
    }
    

    序列化

    import java.io.*;
    
    public class DeserialTest {
    
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            Person person;
            FileInputStream fileInputStream = new FileInputStream("person.txt");
            ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
            person = (Person)objectInputStream.readObject();
            System.out.println(person);
        }
    }
    

    反序列化

    import java.io.*;
    
    public class DeserialTest {
    
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            Person person;
            FileInputStream fileInputStream = new FileInputStream("person.txt");
            ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
            person = (Person)objectInputStream.readObject();
            System.out.println(person);
        }
    }
    

    相关文章

      网友评论

          本文标题:serialVersionUID是干什么用的

          本文链接:https://www.haomeiwen.com/subject/ttcjsxtx.html