如何仅序列化 class 个变量中的一部分?
How to serialize only some of class variables?
是否可以选择我要序列化的 class 个变量?
下面是一个简单的例子(只是为了演示我想使用序列化的方式):
我有一个所有用户的数据库,每次我启动我的应用程序时,我都会看到一个包含所有用户的屏幕。
拥有所有用户的最新列表并不重要。为了获得更好的性能,我将返回的用户列表(从数据库)保存到本地 .dat 文件,在下次应用程序启动时,用户将从 .dat 文件加载。 .dat 文件每 N 分钟或根据用户要求刷新...
出于安全考虑,我不想将密码保存到本地 .dat 文件中,仅保存用户名、电子邮件和朋友就足够了。
如何实现这一点,我是否需要创建一个单独的 UserWithoutPassword class,或者是否有可能选择变量进行序列化?
@Entity
class User implements Serializable {
String username;
String email;
String password;
List<User> friends;
}
谢谢
您只需将一些字段声明为 transient
:
transient int doNotSerialize;
并且它们不会被连载。
另一种方法是声明一个 serialPersistentFields
member 并用您要序列化的字段名称填充它。
是否可以选择我要序列化的 class 个变量?
下面是一个简单的例子(只是为了演示我想使用序列化的方式): 我有一个所有用户的数据库,每次我启动我的应用程序时,我都会看到一个包含所有用户的屏幕。 拥有所有用户的最新列表并不重要。为了获得更好的性能,我将返回的用户列表(从数据库)保存到本地 .dat 文件,在下次应用程序启动时,用户将从 .dat 文件加载。 .dat 文件每 N 分钟或根据用户要求刷新... 出于安全考虑,我不想将密码保存到本地 .dat 文件中,仅保存用户名、电子邮件和朋友就足够了。 如何实现这一点,我是否需要创建一个单独的 UserWithoutPassword class,或者是否有可能选择变量进行序列化?
@Entity
class User implements Serializable {
String username;
String email;
String password;
List<User> friends;
}
谢谢
您只需将一些字段声明为 transient
:
transient int doNotSerialize;
并且它们不会被连载。
另一种方法是声明一个 serialPersistentFields
member 并用您要序列化的字段名称填充它。