当使用Serializable接口实现序列化操作时,如果一个对象中的某一属性不希望被序列化,则可以使用transient关键字进行声明

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.InputStream;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.io.OutputStream;
  9. import java.io.Serializable;
  10.  
  11. //=================================================
  12. // File Name : Serializable_demo
  13. //------------------------------------------------------------------------------
  14. // Author : Common
  15.  
  16. //类名:Person_3
  17. //属性:
  18. //方法:
  19. class Person_3 implements Serializable{ //此类的对象可以被序列化
  20. private transient String name;
  21. private int age;
  22.  
  23. public Person_3(String name, int age) {
  24. super();
  25. this.name = name;
  26. this.age = age;
  27. }
  28.  
  29. @Override
  30. public String toString() {
  31. return "姓名:" + name + ", 年龄:" + age;
  32. }
  33.  
  34. }
  35.  
  36. //主类
  37. //Function : Serializable_demo;
  38. public class Serializable_demo {
  39.  
  40. public static void main(String[] args) throws Exception {
  41. // TODO 自动生成的方法存根
  42. // File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径
  43. // ObjectOutputStream oos = null;
  44. // OutputStream out = new FileOutputStream(f); //文件输出流
  45. // oos = new ObjectOutputStream(out); //为对象输出流实例化
  46. // oos.writeObject(new Person_3("张三", 30));
  47. // oos.close();
  48.  
  49. File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径
  50. ObjectInputStream ois = null;
  51. InputStream input = new FileInputStream(f); //文件输入流
  52. ois = new ObjectInputStream(input); //为对象输入流实例化
  53. Object obj = ois.readObject(); //读取对象
  54. ois.close();
  55. System.out.println(obj);
  56. }
  57.  
  58. }

<3>序列化一组对象

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.InputStream;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.io.OutputStream;
  9. import java.io.Serializable;
  10.  
  11. //=================================================
  12. // File Name : Serializable_demo
  13. //------------------------------------------------------------------------------
  14. // Author : Common
  15.  
  16. //类名:Person_3
  17. //属性:
  18. //方法:
  19. class Person_3 implements Serializable{ //此类的对象可以被序列化
  20. // private transient String name;
  21. private String name;
  22. private int age;
  23.  
  24. public Person_3(String name, int age) {
  25. super();
  26. this.name = name;
  27. this.age = age;
  28. }
  29.  
  30. @Override
  31. public String toString() {
  32. return "姓名:" + name + ", 年龄:" + age;
  33. }
  34.  
  35. }
  36.  
  37. //主类
  38. //Function : Serializable_demo;
  39. public class Serializable_demo {
  40.  
  41. public static void main(String[] args) throws Exception {
  42. // TODO 自动生成的方法存根
  43. // File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径
  44. // ObjectOutputStream oos = null;
  45. // OutputStream out = new FileOutputStream(f); //文件输出流
  46. // oos = new ObjectOutputStream(out); //为对象输出流实例化
  47. // oos.writeObject(new Person_3("张三", 30));
  48. // oos.close();
  49.  
  50. // File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径
  51. // ObjectInputStream ois = null;
  52. // InputStream input = new FileInputStream(f); //文件输入流
  53. // ois = new ObjectInputStream(input); //为对象输入流实例化
  54. // Object obj = ois.readObject(); //读取对象
  55. // ois.close();
  56. // System.out.println(obj);
  57.  
  58. Person_3 per[] = {new Person_3("张三",30),new Person_3("李四",31),new Person_3("王五",32)};//定义对象数组
  59. ser(per); //序列化对象数组
  60. Object o[] = dser();
  61. for(int i=0;i<o.length;i++){
  62. Person_3 p = (Person_3) o[i];
  63. System.out.println(p);
  64. }
  65. }
  66.  
  67. public static void ser(Object obj[]) throws Exception{
  68. File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径
  69. ObjectOutputStream oos = null;
  70. OutputStream out = new FileOutputStream(f); //文件输出流
  71. oos = new ObjectOutputStream(out); //为对象输出流实例化
  72. oos.writeObject(obj);
  73. oos.close();
  74. }
  75.  
  76. public static Object[] dser() throws Exception{
  77. File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径
  78. ObjectInputStream ois = null;
  79. InputStream input = new FileInputStream(f); //文件输入流
  80. ois = new ObjectInputStream(input); //为对象输入流实例化
  81. Object obj[] = (Object[])ois.readObject(); //读取对象数组
  82. ois.close();
  83. return obj;
  84. }
  85.  
  86. }

Java关键字——transient的更多相关文章

  1. Java关键字transient和volatile小结(转)

    Java关键字transient和volatile小结(转) transient和volatile两个关键字一个用于对象序列化,一个用于线程同步,都是Java中比较高阶的话题,简单总结一下. tran ...

  2. 【JSON 注解】JSON循环引用2----JSON注解@JsonIgnoreProperties+JAVA关键字transient+后台对象与JSON数据的格式互相转化

    接着来说这个JSON循环引用的问题: 关于JSON格式的转化,其实关键就是这几个依赖: <!-- json --> <!-- 1号 --> <dependency> ...

  3. Java关键字:transient,strictfp和volatile简介

    关键字:transient 使用对象:字段 介绍:transient说明一个属性是临时的,不会被序列化. 当对象进行序列化(Serializable)过程时候,有一些属性的状态是瞬时的,这样的对象是无 ...

  4. java 关键字 transient

    一个对象实现了Serilizable 接口,该对象就可以被序列化. 然而在实际开发工程中,我们会遇到,这个类的有些属性不需要序列化,比如包含用户的敏感信息(如密码),为了安全起见,不希望在网络操作(主 ...

  5. java关键字-transient

    java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持. Java的serialization提供了一种持久化对象实例的机制.当持久化对象时,可能有 ...

  6. java 关键字transient

    http://www.cnblogs.com/lanxuezaipiao/p/3369962.html 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口 ...

  7. 转载:关于java关键字transient

    今天在map源码中看到这个关键字  百度看一下  转载记录下 源文:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html 1. transient的作 ...

  8. JAVA关键字transient

    转载自http://www.cnblogs.com/liuling/archive/2013/05/05/transient.html 1.transient关键字只能修饰变量,而不能修饰方法和类.注 ...

  9. java关键字transient与volatile小结

    本文转自:http://heaven-arch.iteye.com/blog/1160693 transient和volatile两个关键字一个用于对象序列化,一个用于线程同步,都是Java中比较高阶 ...

随机推荐

  1. AOP 学习笔记

    代理是一个设计模式,提供了对目标对象另外的访问方式:即通过代理访问目标对象. 好处:可以在目标对象实现的基础上,增强额外的功能操作. Cglib 代理,也叫作 子类代理. JDK的动态代理有一个限制, ...

  2. 【2016 ACM/ICPC Asia Regional Qingdao Online】

    [ HDU 5878 ] I Count Two Three 考虑极端,1e9就是2的30次方,3的17次方,5的12次方,7的10次方. 而且,不超过1e9的乘积不过5000多个,于是预处理出来,然 ...

  3. 【POJ 3041】Asteroids (最小点覆盖)

    每次选择清除一行或者一列上的小行星.最少选择几次. 将行和列抽象成点,第i行为节点i+n,第j列为节点j,每个行星则是一条边,连接了所在的行列. 于是问题转化成最小点覆盖.二分图的最小点覆盖==最大匹 ...

  4. 中间值为什么为l+(r-l)/2,而不是(l+r)/2

    二分法的算法中,我们看到一些代码里取中间值: MID=l+(r-l)/2; 为什么是这个呢?不就是(l+r)/2吗?为什么要多此一举呢? 其实还是有不一样的,看看他们的区别吧: l,r是指针的时候只能 ...

  5. git 最基本的使用方法

    1. git init    ----初始化git仓库 2.git add .   ----把代码添加到仓库 3.git commit -m '注释'  ---commit:提交 -m:全部提交  ‘ ...

  6. Redis的事务

    Redis对事务的支持是部分支持,不想oracle,要么都成功要么都失败,Redis可以部分成功部分失败 1 是什么: 可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺 ...

  7. 关于使用struts2时子窗体页面跳转后在父窗体打开的问题以及Session过期后的页面跳转问题

    问题1:传统的系统界面,iframe了三个页面,上,左,右,用户点击注销的按钮在上面得top.jsp里面,方法:<a href="../adminAction/admin_logout ...

  8. 【BZOJ-4269】再见Xor 高斯消元 + 线性基

    4269: 再见Xor Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 131  Solved: 81[Submit][Status][Discuss] ...

  9. 【BZOJ-1031】字符加密Cipher 后缀数组

    1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5504  Solved: 2277[Submit ...

  10. Linq Like

    Like的操作,有点像in,但是,方向变了.什么意思呢.就是你给定一个字符串,去寻找数据中某个字段包含这个字符串.就是给定的字符串是某字段的子集.Sql Script是这么写的. Selec * fr ...