• 关于Java中的transient关键字


    Java中的transient关键字是在序列化时候用的,如果用transient修饰变量,那么该变量不会被序列化。

    下面的例子中创建了一个Student类,有三个成员变量:id,name,age。age字段被transient修饰,当该类被序列化的时候,age字段将不被序列化。

     1 import java.io.Serializable;  
     2 public class Student implements Serializable{  
     3  int id;  
     4  String name;  
     5  transient int age;//Now it will not be serialized  
     6  public Student(int id, String name,int age) {  
     7   this.id = id;  
     8   this.name = name;  
     9   this.age=age;  
    10  }  
    11 }  

    来创建一个用序列化的类:

     1 import java.io.*;  
     2 class PersistExample{  
     3  public static void main(String args[])throws Exception{  
     4   Student s1 =new Student(211,"ravi",22);//creating object  
     5   //writing object into file  
     6   FileOutputStream f=new FileOutputStream("f.txt");  
     7   ObjectOutputStream out=new ObjectOutputStream(f);  
     8   out.writeObject(s1);  
     9   out.flush();  
    10   out.close();  
    11   f.close();  
    12   System.out.println("success");  
    13  }  
    14 }  
    Output: success

    再来创建一个反序列化的类:

    1 import java.io.*;  
    2 class DePersist{  
    3  public static void main(String args[])throws Exception{  
    4   ObjectInputStream in=new ObjectInputStream(new FileInputStream("f.txt"));  
    5   Student s=(Student)in.readObject();  
    6   System.out.println(s.id+" "+s.name+" "+s.age);  
    7   in.close();  
    8  }  
    9 }  
    Output:211 ravi 0

    由此可见,Student的age字段并未被序列化,其值为int类型的默认值:0.

  • 相关阅读:
    事务及存储过程
    索引细讲
    数据库练习题
    position: absolute 或 display:table 的水平垂直居中
    bootstrap table 文字超出父div范围
    css 图片不定大小不压缩、不变形的对齐
    vue3.0 + svg 图标
    vue eslint(indent) 空格缩进报错
    vue3.0 + fontAwesome 图标
    vue3.0 + ts + element-plus + i18n 中英文切换
  • 原文地址:https://www.cnblogs.com/HarrisonHao/p/6106758.html
Copyright © 2020-2023  润新知