java - 特殊标识符:serialVersionUID 和 serialPersistentFields
问题描述
我了解这些字段是什么以及如何使用它们,但我想知道这一点:
Java 编译器如何在其编译步骤中实际处理此类特殊字段?它真的只根据名称查找变量吗?
这似乎很像非Java...除了serialVersionUID
and serialPersistentFields
,还有其他的吗?
解决方案
不幸的是,是的,这些成员是在运行时通过名称神奇地发现的。(实际上,情况更糟;无论它们是静态的还是非静态的、公共的还是私有的等,都适合查找。)你是对的,这不是一个好的做法,也不是很像 Java,但这是我们的遗产被困住了。
有关完整列表,请参阅序列化规范:https ://docs.oracle.com/en/java/javase/11/docs/specs/serialization/index.html
推荐阅读
- firebase - Firebase:使用来自另一个集合的数据填充搜索
- android - 生成深层链接时出现分支 SDK 错误
- xslt - 如何从根元素中删除肥皂命名空间
- angular - Angular 6 将活动类添加到另一个 ngFor 的 ngFor 元素
- sql-server - 如何将 OLAP Cube 部署到本地 SQL Server?
- python - 在 tsql 和 pyodbc 中参数化 TOP 值
- dart - 如何在 Visual Studio Code 中为 Dart 变量设置语法高亮
- node.js - 使用 loopback-datasource-juggler 获取环回模型
- python - 如何在 shapefile(arcmap)的属性表中将 'ß' 替换为 'ss'?ASCII 错误
- visual-studio - 为什么点击手势识别器在绝对布局中不起作用?