目录

一、概要介绍

1. 序列化

2. 为什么要用transient关键字?

3. transient的作用

二、transient使用总结

三、使用场景


一、概要介绍

本文要介绍的是Java中的transient关键字,transient是短暂的意思。对于transient 修饰的成员变量,在类的实例对象的序列化处理过程中会被忽略。 因此,transient变量不会贯穿对象的序列化和反序列化,生命周期仅存于调用者的内存中而不会写到磁盘里进行持久化。

1. 序列化

Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输。一般地,当我们使用缓存cache(内存空间不够有可能会本地存储到硬盘)或远程调用rpc(网络传输)的时候,经常需要让实体类实现Serializable接口,目的就是为了让其可序列化。当然,序列化后的最终目的是为了反序列化,恢复成原先的Java对象实例。所以序列化后的字节序列都是可以恢复成Java对象的,这个过程就是反序列化。

2. 为什么要用transient关键字?

在持久化对象时,对于一些特殊的数据成员(如用户的密码,银行卡号等),我们不想用序列化机制来保存它。为了在一个特定对象的一个成员变量上关闭序列化,可以在这个成员变量前加上关键字transient。

3. transient的作用

transient是Java语言的关键字,用来表示一个成员变量不是该对象序列化的一部分。当一个对象被序列化的时候,transient型变量的值不包括在序列化的结果中。而非transient型的变量是被包括进去的。  注意static修饰的静态变量天然就是不可序列化的。

二、transient使用总结

(1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法被访问。
(2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。
(3)一个静态变量不管是否被transient修饰,均不能被序列化(如果反序列化后类中static变量还有值,则值为当前JVM中对应static变量的值)。序列化保存的是对象状态,静态变量保存的是类状态,因此序列化并不保存静态变量。

三、使用场景

(1)类中的字段值可以根据其它字段推导出来,如一个长方形类有三个属性长度、宽度、面积,面积不需要序列化。
(2) 一些安全性的信息,一般情况下是不能离开JVM的。
(3)如果类中使用了Logger实例,那么Logger实例也是不需要序列化的

Java中transient关键字的详细总结相关推荐

  1. [转载] JAVA中transient 关键字

    参考链接: Java中的transient关键字 今天学习到对象流,序列化反序列化的时候,老师用了一个transient关键字来防止某个属性被序列化,脑子一头懵逼,于是在网上看到了找了别人的博客,也不 ...

  2. java 中 transient关键字

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需 ...

  3. java中transient关键字使用学习

    导师让我学习序列化和反序列化的时候才意识到自己的对java中的transient关键字不熟.看了很多介绍和学习笔记之后,对transient关键字的使用做一下总结: 如果一个对象只要实现了Serili ...

  4. 关于Java中final关键字的详细介绍

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

  5. java transient_【转】Java中的关键字 transient

    阅读目录 先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的 ...

  6. mfc从文件中读取数据_Java中Transient关键字,一点课堂(多岸学院)

    Java中Transient关键字 虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的 ...

  7. java中的关键字transient说明

    这个关键字的作用其实我在写java的序列化机制中曾经写过,不过那时候只是简单地认识,只要其简单的用法,没有深入的去分析.这篇文章就是去深入分析一下transient关键字. 先给出这篇文章的大致脉络 ...

  8. 在java中使用关键字导入包_java中import关键字的使用方法

    java中import关键字的使用方法 发布时间:2020-06-26 15:05:44 来源:亿速云 阅读:96 作者:Leah 这篇文章将为大家详细讲解有关java中import关键字的使用方法, ...

  9. java关键字 valotile_Java内存模型-jsr133规范介绍,java中volatile关键字的含义

    最近在看<深入理解Java虚拟机:JVM高级特性与最佳实践>讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范. 系统的看了jsr 133规范的前面几 ...

最新文章

  1. u盘复制不进去东西_限制电脑只能识别自己指定的U盘
  2. k-Nearest Neighbors 实战1 简单的电影分类实例
  3. java学习(147):字节输入流
  4. python 内存释放gc_如何释放内存的python删除对象?
  5. Junit4所需jar包
  6. CentOS 禁用Ctrl+Alt+Del重启功能
  7. 【对话系统】对话系统核心技术概要
  8. 阿里巴巴内部资料:2018全技术栈图册ppt分享
  9. CRMEB 【Java版】单商户商城系统v1.4.1
  10. mac过热_如何阻止Mac过热
  11. 鸟哥的Linux私房菜(基础学习篇第四版)学习笔记
  12. 【2023秋招】10月8日美团校招两道题
  13. 思维导图的三招十八式
  14. 计算机网络波动大,网络不稳定怎么办,小编教你电脑网络不稳定怎么办
  15. VS Code 快捷键(中英文对照版)
  16. 9.2 向量范数的三大不等式
  17. html语言设置网页背景,HTML+CSS入门 设置网页中的背景图片的5个属性
  18. 解决Ubuntu 键盘输入一直大写的问题
  19. 多因素分析显示脂肪沉积比炎症损害更能预测强直性脊柱炎患者的脊柱新骨形成...
  20. 手把手教你安装vivado2015.4开发环境

热门文章

  1. Xshell无法正常启动(0x000007b)
  2. IOCP使用acceptEX进行异步接收
  3. 开源工作流系统java整合activiti,快速开发平台
  4. html的表格变成输入框,element+vue表格点击变成输入框(可编辑状态)
  5. 山东菏泽限售解禁之后续市场解读
  6. 宝宝感冒用药记录-仅供参考
  7. android hook技术-Xposed框架 帮你轻松应对支付宝2016晒账单
  8. 一个Key对应多个Value
  9. 004--Django(定义模型类、数据的增删改查、F和Q对象)
  10. Python中 rstrip()、 lstrip()、 strip() 的用法和区别