转载于:[lfsf802](http://blog.csdn.net/lfsf802/article/details/43239663)

关键字介绍

一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java的这种序列化模式为开发者提供了很多便利,可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的所有属性和方法都会自动序列化。但是有种情况是有些属性是不需要序列号的,所以就用到这个关键字。只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。

代码:

实现Serializable接口的UserInfo类,并且有一个transient关键字修饰的属性

  1. package com.testtransient.model;
  2. import java.io.Serializable;
  3. public class UserInfo implements Serializable {
  4. private static final long serialVersionUID = 1L;
  5. private String name ;
  6. private transient String pwd ;
  7. public UserInfo(String name,String pwd){
  8. this.name =name;
  9. this.pwd =pwd;
  10. }
  11. public String toString(){
  12. return “name=” +name +“,psw=” +pwd ;
  13. }
  14. }
package com.testtransient.model;
import java.io.Serializable;
public class UserInfo implements Serializable { private static final long serialVersionUID = 1L; private String name ; private transient String pwd ; public UserInfo(String name,String pwd){
this.name =name;
this.pwd =pwd;
} public String toString(){
return "name=" +name +",psw=" +pwd ;
}
}

通过输入输出流编写的测试程序

  1. public class TestTransient {
  2. public static void main(String[] args) {
  3. UserInfouserInfo = new UserInfo(“张三” , “123456” );
  4. System. out.println(userInfo);
  5. try {
  6. // 序列化,被设置为transient的属性没有被序列化
  7. ObjectOutputStreamo = new ObjectOutputStream(new FileOutputStream(
  8. ”UserInfo.out”));
  9. o.writeObject(userInfo);
  10. o.close();
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. try {
  15. // 重新读取内容
  16. ObjectInputStream in = new ObjectInputStream( new FileInputStream(
  17. ”UserInfo.out”));
  18. UserInforeadUserInfo = (UserInfo) in.readObject();
  19. // 读取后psw的内容为null
  20. System. out.println(readUserInfo.toString());
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. }
public class TestTransient {

        public static void main(String[] args) {
UserInfouserInfo = new UserInfo("张三" , "123456" );
System. out.println(userInfo);
try {
// 序列化,被设置为transient的属性没有被序列化
ObjectOutputStreamo = new ObjectOutputStream(new FileOutputStream(
"UserInfo.out"));
o.writeObject(userInfo);
o.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
// 重新读取内容
ObjectInputStream in = new ObjectInputStream( new FileInputStream(
"UserInfo.out"));
UserInforeadUserInfo = (UserInfo) in.readObject();
// 读取后psw的内容为null
System. out.println(readUserInfo.toString());
} catch (Exception e) {
e.printStackTrace();
}
}

运行结果:

从上面结果能够看出来经过transient关键字修饰的字段是不能够被序列化的。

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

  1. 关于Java中的transient关键字

    Java中的transient关键字是在序列化时候用的,如果用transient修饰变量,那么该变量不会被序列化. 下面的例子中创建了一个Student类,有三个成员变量:id,name,age.ag ...

  2. java中的transient关键字详解

    目录 1.何谓序列化? 2.为何要序列化? 3.序列化与transient的使用 4.java类中serialVersionUID作用 5.transient关键字小结 前言 说实话学了一段时间jav ...

  3. Java中的transient关键字,使用小结

    transient关键字的介绍: 一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java的这种序列化模式为开发者提供了很多便利,可以不必关系具体序列化的过程,只要这个类实现了S ...

  4. (转)Java中的static关键字解析

    转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: &q ...

  5. 浅析Java中的final关键字(转载)

    自http://www.cnblogs.com/dolphin0520/p/3736238.html转载 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括 ...

  6. 关于Java中的final关键字

    Java中的final关键字是用来限制用户行为的,说白了,就是用来限制我们这些程序员的.final可以用来修饰:变量.方法.类. 1)Java final variable final用来修饰变量时, ...

  7. 关于Java中的static关键字

    Java中的 static 关键字,确实是一个关键的字(key word),今天就来总结一下它的用法,说说为什么关键. Java中的 static 关键字主要是用来做内存管理的.理解了这句话才能够比较 ...

  8. Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  9. 深入理解Java中的final关键字

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

随机推荐

  1. mysql 外键和子查询,视图

    1.mysql 外键约束 建表时生成外键   foreing key ('sid') references' student'('id'); 建表后添加外键  alter table' course ...

  2. 输入框VS软键盘

    最近在做一个h5的时候遇到的问题 我们都知道当页面上的有输入框被选中了,这个时候就回调出键盘用户可以输入.但是安卓手机在弹出键盘时页面的输入框也会被覆盖住: 以下为暂时的解决办法:(以下方法同时解决了 ...

  3. post表单翻页保存搜索条件

    问题:搜索条件下的数据,进行翻页行为后,搜索条件丢失 1.搜索表单 2.翻页 解决:既然点击页面跳转的a标签使用的方法是GET,而点击“搜索”按钮使用的方法是POST,那么可以让点击a标签实际上就是提 ...

  4. VS Code引用 vue/cli

    npm i @vue/cli -g    引用cli脚手架 3.0版本 下载好后 找个空文件夹  vue create myvue 创建vue项目   myvue是自己项目名称 Your connec ...

  5. 阿里云一 第一篇:云服务器ECS

    阿里云(www.aliyun.com)创立于2009年,是全球领先的云计算及人工智能科技公司,为200多个国家和地区的企业.开发者和政府机构提供服务.截至2017年3月,阿里云付费云计算用户达87.4 ...

  6. Spock - Document -04- Interaction Based Testing

    Interaction Based Testing Peter Niederwieser, The Spock Framework TeamVersion 1.1 Interaction-based ...

  7. python的面试问题

    WHAT 1. 什么是Python? Python是一种编程语言,它有对象.模块.线程.异常处理和自动内存管理.可以加入与其他语言的对比.下面是回答这一问题的几个关键点: a. Python是一种解释 ...

  8. admin-6

    Admin06 基本权限访问方式(权限) 读取:允许查看内容-read r 写入:允许修改内容-write w 可执行:允许运行和切换-execute x 对与文本文件: r:cat head tai ...

  9. consul & registrator & consul-template 使用

    consul & registrator & consul-template 使用 参考这里的文章: https://www.jianshu.com/p/a4c04a3eeb57 do ...

  10. AutoCompleteExtender 使用示例

    绑定 KeyValuePair,网上很多例子,没有找到绑定键值对的,msdn上有例子,备忘一下. using FirstElite.Verify.Entity; using System; using ...