手册目录
Java 教程
Java 方法
Java 类
Java 文件处理
Java 数据结构
Java 案例
Java 参考手册
Java 关键字
Java String 方法
Java Math 方法
Java Output 方法
Java Arrays 类
Java ArrayList 方法
Java LinkedList 方法
Java HashMap 方法
Java Scanner 方法
Java 迭代器接口
Java 错误和异常类型
Java.io 包教程
Java.lang 包教程
Java.math 包教程
java.time 包教程
Java.util 包教程
Java 正则表达式教程
java.util.zip 包教程
前言
定义和用法transient 关键字是一个修饰符,用于指示 Java 在序列化对象时忽略某个属性。实例transient 关键字用于防止属性被序列化:impor
transient 关键字是一个修饰符,用于指示 Java 在序列化对象时忽略某个属性。
transient 关键字用于防止属性被序列化:
import java.io.*;
public class Main {
public static void main(String[] args) {
Person person = new Person();
person.fname = "Bill";
person.lname = "Gates";
person.age = 19;
person.accessCode = 5044;
// 序列化对象
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
ObjectOutputStream objOut = new ObjectOutputStream(output);
objOut.writeObject(person);
} catch (IOException e) {}
// 反序列化对象
Person person2 = new Person();
try {
ObjectInputStream objIn = new ObjectInputStream(new ByteArrayInputStream(output.toByteArray()));
person2 = (Person) objIn.readObject();
} catch(Exception e) {}
// 打印反序列化后的对象
System.out.println("名字: " + person2.fname);
System.out.println("姓氏: " + person2.lname);
System.out.println("年龄: " + person2.age);
System.out.println("访问代码: " + person2.accessCode); // 此处将打印出 0,因为 accessCode 被标记为 transient,所以未被序列化
}
}
class Person implements Serializable {
String fname = "Bill";
String lname = "Gates";
int age = 19;
transient int accessCode = 0; // 这个属性在序列化时会被忽略
}
点击 "运行实例" 按钮查看在线实例
在这个例子中,Person 类有一个 transient 修饰的 accessCode 属性。当 Person 对象被序列化时,accessCode 属性不会被包含在序列化数据中。因此,在反序列化后,accessCode 的值将恢复为其默认值(在这个例子中是 0),而不是序列化之前的值(5044)。
相关视频
科技资讯
24小时阅读榜
1
2
3
4
5
6
7
8
9
10
精品课程
共5课时 | 17.4万人学习
共49课时 | 78.1万人学习
共29课时 | 62.5万人学习
共25课时 | 39.7万人学习
共43课时 | 73.8万人学习