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;
}
相关推荐
SamDeepThinking1 小时前
从源码到代码:MyBatis-Flex 与 MyBatis-Plus 的逐项对比
java·后端·程序员
她的男孩4 小时前
Spring Boot 接 Flowable 工作流:用 3 个注解搭一个请假审批流程
java·后端·架构
荣码6 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
plainGeekDev8 小时前
Gson → kotlinx.serialization
android·java·kotlin
小bo波16 小时前
Java Swing 图形用户界面实验 —— 从算术练习到游戏开发的完整实践
java·课程设计·gui·游戏开发·扫雷·swing
咖啡八杯18 小时前
GoF设计模式——备忘录模式
java·后端·spring·设计模式
SamDeepThinking1 天前
裁掉那个差程序员后,给你看团队里高手的代码:这个习惯,希望你有
java·后端·程序员
朕瞧着你甚好1 天前
技术雷达 & Java 集成评估报告 — Apache Tika 3.3.1
java·ai编程