Java序列化接口Serializable的功能简介说明

乔欣 Java面经 发布时间:2022-12-19 21:46:57 阅读数:7945 1
下文笔者讲述Serializable功能简介说明,如下所示

Serializable的功能

Serializable在java.io包中定义
  用于将JAVA对象进行序列化和反序列化

序列化:
  将一个JAVA对象以二进制流的方式持久化到数据库、文件中,或用于大对象暂存、网络传输、使用序列化实现深度克隆

反序列化:
  将持久化在数据库或文件中的二进制数据
  使用流的方式读取出来重新构造成一个和之前内容相同的JAVA对象

Serializable序列化接口没有任何方法或字段,只用于标识可序列化的语义

当一个对象实现Serializable接口
  则这个对象中所有信息(除static、transient修饰的变量信息外)
的其它信息将自动序列化

serialVersionUID功能

通常情况下
  serialVersionUID是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段

对象在反序列化时
  如果serialVersionUID值不同,则会抛出InvalidClassException的异常,则反序列化失败 
例: User.java
 
import java.io.Serializable;
  /*
   * Serializable:用于给被序列化的类加入ID号。
   * 用于判断类和对象是否是同一个版本。 
   */
  public class User implements Serializable/*标记接口*/ {
      /**
       * transient:非静态数据不想被序列化可以使用这个关键字修饰。 
       */
     private static final long serialVersionUID = 9527l; 
 //    private transient String name;
     private  String name;
 //    private static int age;
     private int age;
 
     public Person(String name, int age) {
         super();
         this.name = name;
         this.age = 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;
      }
  }
ObjectStreamDemo.java
  
  public class ObjectStreamDemo {
        /**
         * @param args
         * @throws IOException 
         * @throws ClassNotFoundException 
         */
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            //writeObj();
            readObj();
        }
       public static void readObj() throws IOException, ClassNotFoundException {
           ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.object"));
           //对象的反序列化。 
           User p = (User)ois.readObject();
           System.out.println(p.getName()+":"+p.getAge());
           ois.close();
       }
   
       public static void writeObj() throws IOException, IOException {
           
           ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object"));
           //对象序列化。  被序列化的对象必须实现Serializable接口。 
           oos.writeObject(new User("java",18));
           oos.close();
       }
   }
 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaMianJing/202212/16714576895187.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者