transient 修饰符·学习笔记

"你好,阿米戈!我要告诉你有关序列化的更多细节。

假设我们的类包含对某个 InputStream 的引用。那么就无法对其进行序列化,对吗?

"是的。你亲口说过,流无法序列化。而且,无法序列化包含不可序列化数据的对象。"

"是的。就是这样。但是,如果类所存储的数据在其状态中未扮演重要角色,却阻止该类被视为可序列化的类,该怎么办?没关系,类可能会存储无用内容。它可以随时甚至永久抛弃此数据。"

对于这些情况,Java 创建者给出了 transient 关键字。如果将此关键字写在成员变量之前,则该变量在序列化期间将被忽略。其状态不会被保存或重构。就像它不存在一样。这正好针对我们刚才考虑的情况。

还记得缓存和 volatile 修饰符吗?任何规则都有例外

下面就是这样一个示例:

"cat"示例包含将被序列化忽略的变量:

代码

复制代码
class Cat implements Serializable
{
 public String name;
 public int age;
 public int weight;

 transient public InputStream in = System.in;
}
相关推荐
jwn9992 小时前
SQL Server2019下载及安装教程
java
阿猿收手吧!2 小时前
【C++】建造者与代理模式实战解析
开发语言·c++·代理模式
虚拟世界AI2 小时前
Java服务器开发:零基础实战指南
java·servlet·tomcat
2501_945424802 小时前
C++跨平台开发实战
开发语言·c++·算法
AsDuang2 小时前
Python 3.12 MagicMethods - 54 - __rrshift__
开发语言·python
Bert.Cai2 小时前
Python字符串详解
开发语言·python
码界奇点2 小时前
基于模块化架构的Unity游戏开发框架设计与实现
java·c++·unity·架构·毕业设计·源代码管理
后端AI实验室2 小时前
同一个需求,我先出技术方案,再让AI出方案——差距让我沉默了
java·ai
xyyaihxl2 小时前
springboot与springcloud对应版本
java·spring boot·spring cloud