【Java】浅谈关键词transient的使用
说明
本文的路径被我删了部分,所以复制代码的话要注意自己写好文件的path。
控制序列化IO的类
import java.io.*;public class PersonMapper {private PersonMapper() {}private static PersonMapper mapper;/*** 获取单例* @return 单例*/public static PersonMapper getInstance() {if (mapper == null) {mapper = new PersonMapper();}return mapper;}/*** 反序列化从文件中读取Person的序列化对象*/public Person readObject() {try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("src/com/.../test/serialPerson.dat"))) {Person obj = (Person)ois.readObject();return obj;} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}return null;}/*** 序列化对象*/public void writeObject(Person object) {try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("src/com/.../test/serialPerson.dat"))) {oos.writeObject(object);} catch (IOException e) {e.printStackTrace();}}}
测试类
public class TransientTest {public static void main(String[] args) {Person person = new Person(1, "Tim", 10);PersonMapper mapper = PersonMapper.getInstance();mapper.writeObject(person);System.out.println(mapper.readObject());}
}
使用transient的Person类
注意实现 java.io.Serializable,并写一下serialVersionUID。
注意 transient !!!
public class Person implements Serializable {private static final long serialVersionUID = 1L;private Integer id;private String name;private transient Integer age;public Person(Integer id, String name, Integer age) {this.id = id;this.name = name;this.age = age;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}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;}@Overridepublic String toString() {return "Person{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';}}
测试结果:
Person{id=1, name='Tim', age=null}
去掉transient的Person类
只删去 transient:
public class Person implements Serializable {private static final long serialVersionUID = 1L;private Integer id;private String name;private Integer age;public Person(Integer id, String name, Integer age) {this.id = id;this.name = name;this.age = age;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}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;}@Overridepublic String toString() {return "Person{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';}}
测试结果:
Person{id=1, name='Tim', age=10}
结论
Java没有把对象被transient标记的属性序列化。
荐读
- Java transient关键字使用示例
- Java transient关键字使用小记
Update on 2020.3.7
- transient修饰的属性不进行序列化的操作,起到一定消息屏蔽 的效果
- 被transient修饰的属性可以正确的创建,但被系统赋为默认值。
比如,int类型为0,String类型为null
注:ObjectInputStream和ObjectOutputStream类不会保存和 读写对象中的transient和static类型的成员变量
【Java】浅谈关键词transient的使用相关推荐
- 网络宣传推广浅谈关键词排名好却没有流量的原因解决方法!
网站在优化的过程中,有的网络宣传推广站长们发现,网站的关键词优化排名很可观,但是却没什么流量,那么导致这种情况发生的原因是什么?又该如何解决呢?下面网络宣传推广就带大家一起来了解一下. 1.关键词搜索 ...
- 网络推广软件浅谈关键词如何布置才能让优化更事半功倍!
在网站优化的过程中,网络推广软件表示,关键词的排名提升是优化人员们所追求的东西,并且是排名越高越好.但实际操作起来并没有那么容易,对于关键词的设置也会影响着网站排名,那么对于网站关键词该如何优化才能让 ...
- java hexits,[Java]浅谈Java的异常体系
为什么需要异常 理想的情况下,程序是不会有BUG的.但是现实的情况是:处处都可能引发BUG,比如一个糟糕的输入.需要访问的资源不存在.网络出现抖动.服务器资源不足等等.这就要求我们的程序需要一个机制来 ...
- java浅谈线程安全之锁
在java锁的知识中,我们首先要知道分布式锁和本地锁的概念. 1.本地锁: 在单进程的系统中,存在多个线程去同时操作某个共享变量时,就需要使用本地锁,最常用的关键字:synchronized 2.分布 ...
- 关键词是什么?浅谈关键词的种类
我们购买商品的时候,做的最多的事情应该就是根据想买的物品首先输入的是商品的关键词,然后才会弹出一系列想要的商品,我们再从中挑选,我们现在得了解到我们所搜索的这个名字也就是我们淘宝商家所设置的关键词,能 ...
- java:浅谈axis调用webservice接口
[申明:此代码已经经过测试可以正确使用:但内容解释为个人见解,如有不准确之处,请指教. 阅读前请先仔细阅读"[]"中的说明文字,以免与您的需求不符而 ...
- 汇智动力学院——Java 浅谈数据结构和算法
以前不管自己还是朋友在面试java工程师岗位的时候,都会被问到这样的问题: "介绍下java中的数据结构和算法", 很多朋友被问到的时候发现无从下口,甚至特别是一些初级java工程 ...
- 单例设计模式java,浅谈Java编程中的单例设计模式
写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据.但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像f ...
- Java | 浅谈多态中的向上转型与向下转型
文章目录
最新文章
- activiti bpmn 安装不上_小猿圈之Eclipse安装Activiti插件(流程设计器)
- php获取表单信息的代码_php 表单数据的获取代码
- 简述如何书写工程化的简单代码
- 调参方法论:如何提高机器学习模型的性能?
- 查找在Git中删除文件的时间
- UVA515 King
- python oop 实践_Python OOP示例?
- 成功解决生意参谋中transit-id和加密数据date
- JAVAFX的table样式修改
- python运算符用来计算集合并集的_Python 运算符中用来计算集合并集的是 _______ 。 (2.0分)_学小易找答案...
- Excel表格限制编辑,什么原因?
- 通过IP获取地理位置的开放接口汇总
- gateway中的局部过滤器_GateWay过滤器
- Scipy总结(constants)
- [Mysql] GROUP BY分组
- 用计算机弹出记事本,win7电脑开机就会弹出Desktop.ini记事本怎么办?
- USB OTG模式及切换
- 一份超详细的网站推广优化方案
- shiro手机无状态登录访问和电脑端登录访问两种方式处理
- 学习Qt使用GDI+绘图笔记
热门文章
- 深入浅出的排序算法-冒泡排序
- JVM从入门到放弃——JVM内存模型
- IOS-NSDateFormatter使用介绍
- 安卓系统开机过程中logo和动画
- 文本框获取和失去焦点默认值问题
- 基于.Net 写我自己的Ajax后台框架AjaxFramework
- DataGridView里的Checkbox全选问题解决了!
- python3 一些常用的数学函数
- 织梦缩略图自动补齐绝对路径_[教程]织梦CMS缩略图和文章内容图片自动转化为带域名的绝对路径...
- 利用计算机找出函数关系式,使用 CHOOSE 查找函数中类似于表的信息 - Excel公式函数运用大全...