Java-transient关键字
一、初识transient关键字
1、概念
将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。
2、实例
public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {write();read();}private static void write() throws IOException {User user = new User();user.setName("Amy");user.setAge(18);ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E://test/temp"));oos.writeObject(user);oos.close();System.out.println("write: name="+user.getName()+" age="+user.getAge());}private static void read() throws IOException, ClassNotFoundException {File file = new File("E://test/temp");ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));User user = (User)ois.readObject();System.out.println("read: name="+user.getName()+" age="+user.getAge());}
}
class User implements Serializable{private String name;private transient Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}
执行结果
write: name=Amy age=18
read: name=Amy age=null
说明被transient关键字修饰之后没有被序列化
二、深入分析transient关键字
1、Transient与Serialization
Serialization(序列化)是将对象的状态信息转化为可以存储或者传输的形式的过程,由于内存的易失性;传输需要;一些应用场景中需要将对象持久化下来,以便在需要的时候进行读取。
Transient关键字的作用是控制变量的序列化,在变量声明前加上该关键字,可以阻止该变量被序列化到文件中,在被反序列化后,transient变量的值被设为初始值,如int型的是0,对象型的是null。
2、被transient关键字修饰过得变量真的不能被序列化吗
Java序列化提供两种方式
方法一:实现Serializable接口
对于这种方式序列化的时候的一个关键字:transient它声明的变量实行序列化操作的时候不会写入到序列化文件中去。
方法二:实现Exteranlizable接口
对于这种方式的使用场景通常是一个类中我们只希望序列化一部分数据,其他数据都使用transient修饰的话显得有点麻烦,这时候我们使用externalizable接口,指定序列化的属性。既然指定了哪些属性是需要被序列化的,那么transient关键字修饰也就不起作用了。
3、静态变量能被序列化吗
静态变量是不会被序列化的
文章仅作为个人学习整理
Java-transient关键字相关推荐
- java transient关键字_小伙子,你真的搞懂 transient 关键字了吗?
先解释下什么是序列化 我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术. Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将 ...
- Java transient关键字使用小记
哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transi ...
- java transient关键字
transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只 ...
- Java transient关键字使用详解
1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过 ...
- Java transient关键字(序列化避免被反序列化获取敏感信息)
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...
- java transient关键字_嗯?你真的会用 Java 序列化机制?
码农每日一题长按关注,工作日每天分享一个技术知识点. 一.序列化.反序列化概念及其使用场景 1.序列化.反序列化的概念 简单的讲,序列化就是将java对象转化成二进制保存到磁盘中去,反序列化就是从磁盘 ...
- Java transient关键字小记
1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过 ...
- java transient 关键字_java中的transient关键字详解
前言 说实话学了一段时间java的朋友对于transient这个关键字依旧很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!如果要说讲到,我觉得最可能出现的地方是I ...
- java transient 关键字_Java的transient关键字
一.介绍 Java中的transient关键字,transient是短暂的意思.对于transient 修饰的成员变量,在类实例的序列化处理过程中会被忽略. 因此,transient变量不会贯穿对象的 ...
- java transient 关键字_JAVA中TRANSIENT关键字的作用
Java的serialization提供了一种持久化对象实例的机制.当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它. 为了在一个特定对象的一个域上关闭s ...
最新文章
- IDEA使用从Eclipse过来的快捷键
- linux主机数据拷贝,linux 服务器之间拷贝文件
- Bootstrap开发框架视频整理
- python网页填表教程_PythonSpot 中文系列教程 · 翻译完成
- python爬虫案例-乌托家家具公司数据爬取
- shell 函数传递参数_python3基础之函数参数的传递方式
- 蜘蛛搜索引擎_「SEO工具」如何利用爱站工具去分析各搜索引擎蜘蛛情况?
- 【李宏毅2020 ML/DL】P34 More about explainable AI | Attribution, Heatmap, explainable model
- 可以做服务器操作系统的是,可以做服务器操作系统
- 卡特兰(Catalan)数列
- java正则表达式的语法详解及常用方法
- 四叉树(QuadTree)原理
- java视频插件,5+最佳javascript视频背景插件
- kubernetes挂载glusterfs遇到的问题
- 东北财经有计算机系吗,东北财经大学计算机科学与技术专业要学哪些课程,好学吗?...
- linux驱动管道,Xilinx Linux 如何理解V4L2的管道驱动程序
- 回忆篇,那些抹不去的童年记忆
- vpr文件转换flac_vpr文件格式怎么转换,划重点了
- mbedtls | 09 - 数字签名算法的配置与使用(RSA数字签名算法、ECDSA数字签名算法)
- 【强化学习】GAIL