如何仅序列化 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 并用您要序列化的字段名称填充它。