在 Java 序列化(Serializable) 中,静态变量(static 变量)不会参与序列化。
因此:
private static int count = 10;
count 不会被序列化,也不会被反序列化恢复。
import java.io.*;
class Person implements Serializable {
private String name;
public static int staticField = 100;
public Person(String name) {
this.name = name;
}
}
序列化 → 反序列化后:
name 会被恢复staticField 保持当前 JVM 中类的值,而不是序列化时的值❌ 认为“静态变量会被一起保存”
✅ 实际:反序列化时静态变量的值取决于 类加载时的初始值或运行期修改值
如果你 真的想影响静态变量(不推荐),只能在:
readObject()readResolve()
中手动处理(但这已经不是“序列化静态变量”了)Java 序列化不序列化 static 变量,因为 static 属于类而不属于对象。
如果你愿意,我也可以讲 transient、serialVersionUID 或 序列化的最佳实践。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。