作用

1,一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。 
2,transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。 
3,一个静态变量不管是否被transient修饰,均不能被序列化。

请看代码

//实体类(必须实现Serializable接口,才能被序列化)
public class Resume implements Cloneable,Serializable{
private static final long serialVersionUID = 1L; private String name;
private static String sex;
transient private String age;
private WorkExperience workExperience; public WorkExperience getWorkExperience() {
return workExperience;
} public void setWorkExperience(WorkExperience workExperience) {
this.workExperience = workExperience;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public void dispaly(){
System.out.println("姓名:"+name+"\t年龄:"+age+"\t性别:"+sex);
// System.out.println("工作经历:"+workExperience.getWorkDate()+"\t"+workExperience.getCompany());
} public Object clone(){
try {
Resume resume = (Resume)super.clone();
return resume;
}catch (Exception e){
return null;
} } } public class MainTest2 {
public static void main(String[] args){ try {
// 序列化Resume
Resume resume = new Resume();
resume.setName("哈哈");
resume.setSex("男");
resume.setAge("20");
resume.dispaly();
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("D:\\resume.txt"));
outputStream.writeObject(resume);
outputStream.close();
}catch (Exception e){
e.printStackTrace();
} }
}
//输出结果
姓名:哈哈 年龄:20 性别:男

反序列化

public class MainTest2 {
public static void main(String[] args){ try {
// 序列化Resume
Resume resume = new Resume();
// resume.setName("哈哈");
// resume.setSex("男");
// resume.setAge("20");
// resume.dispaly();
// ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("D:\\resume.txt"));
// outputStream.writeObject(resume);
// outputStream.close(); //改变sex(根据结果可见sex未被序列化,而是直接从内存中读取)
resume.setSex("女"); //反序列化
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("D:\\resume.txt"));
Resume resume1 = (Resume) inputStream.readObject();
resume1.dispaly();
}catch (Exception e){
e.printStackTrace();
} }
}
//结果
姓名:哈哈 年龄:null 性别:女

 根据结果可知age字段被transient修饰未能序列化成功,而sex反序列化之前改变了值,所以标明也未被序列化。

  

transient关键字详解的更多相关文章

  1. java中的transient关键字详解

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

  2. java关键字(详解)

    目录 1. 基本类型 1) boolean 布尔型 2) byte 字节型 3) char 字符型 4) double 双精度 5) float 浮点 6) int 整型 7) long 长整型 8) ...

  3. 【转载】C/C++中extern关键字详解

    1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

  4. python关键字详解

    今天依旧在啃:<笨方法学python>,其中习题37是复习各种关键字.我本想百度一下记一下就ok了,但是百度出来第一个就Hongten的博客.我才意识到我也有博客,我应该学习他,把这些积累 ...

  5. Java面试题04-final关键字详解

    Java面试题04-final关键字详解 本篇博客将会讨论java中final关键字的含义,以及final用在什么地方,感觉看书总会有一些模糊,而且解释的不是很清楚,在此做个总结,以备准备面试的时候查 ...

  6. Objective-C 实用关键字详解1「面试、工作」看我就 🐒 了 ^_^.

    在写项目 或 阅读别人的代码(一些优秀的源码)中,总能发现一些常见的关键字,随着编程经验的积累大部分还是知道是什么意思 的. 相信很多开发者跟我当初一样,只是基本的常用关键字定义属性会使用,但在关键字 ...

  7. java continue break 关键字 详解 区别 用法 标记 标签 使用 示例 联系

    本文关键词: java continue break 关键字 详解 区别  用法 标记  标签 使用 示例 联系   跳出循环 带标签的continue和break 嵌套循环  深入continue ...

  8. mysql中文、英文别名排序问题,order by 关键字详解

    order by 关键字详解:   SELECT intcode AS 商品编码, product_title AS 名称, retailprice AS 零售价, purchaseprice AS ...

  9. Java多线程(三)—— synchronized关键字详解

    一.多线程的同步 1.为什么要引入同步机制 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源.必须对这种潜在资源冲突进行预防. 解决方法:在线程使用一个资源时为其加锁即可. 访问资 ...

随机推荐

  1. sublime text3 快捷键和好用的插件

    常用快捷键: Ctrl + D 选中一个单词 Ctrl + L 选中一行 Ctrl + A 全选 Ctrl + M 选中括号内所有内容 (编写CSS或JS时非常实用) Ctrl + G 快速定位到某一 ...

  2. Django框架----Form组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  3. python之字符串函数

    1.  endswith()  startswith() # 以什么什么结尾 # 以什么什么开始 test = "alex" v = test.endswith('ex') v = ...

  4. Java 高级开发必修知识---内部类

    摘自:http://www.cnblogs.com/lsy131479/p/8798912.html Java 内部类分为: 1)成员内部类 2)静态嵌套类 3)方法内部类 4)匿名内部类 内部类的共 ...

  5. 每日linux命令学习-xargs命令

    xargs命令 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据 ...

  6. 数据分析之pandas02

    DataFrame 一.DataFrame DataFrame是一个[表格型]的数据结构.DataFrame又按一定顺序排列的多列数据组成,设计初衷是将Series的使用场景从一维扩展到多维.Date ...

  7. 计算概论(A)/基础编程练习1(8题)/2:苹果和虫子

    #include<stdio.h> #include<math.h> int main() { /* n个苹果 每x小时能吃掉一个苹果 经过y小时 */ float n, x, ...

  8. URL的解析,C语言实现

    源: URL的解析,C语言实现 c语言实现urlencode和decode

  9. 第一章-硬件组成及linux发展历史(1)

    一.服务器与计算机的组成? 计算机组成主要有:CPU.硬盘.内存.电源.显示器.鼠标.键盘 服务器组成主要有:CPU.硬盘.内存.电源.RAID卡.远程控制卡 CPU: 即:中央处理器,是一块超大规模 ...

  10. 【题解】Luogu CF915E Physical Education Lessons

    原题传送门:CF915E Physical Education Lessons 前置芝士:珂朵莉树 窝博客里对珂朵莉树的介绍 没什么好说的自己看看吧 这道题很简单啊 每个操作就是区间赋值,顺带把总和修 ...