当前位置: 首页 > 面试题库 >

Java序列化中如果有些字段不想进行序列化,怎么办?

郁吉星
2023-03-14
本文向大家介绍 Java序列化中如果有些字段不想进行序列化,怎么办?相关面试题,主要包含被问及 Java序列化中如果有些字段不想进行序列化,怎么办?时的应答技巧和注意事项,需要的朋友参考一下

对于不想进行序列化的变量,使用transient关键字修饰。

transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被transient修饰的变量值不会被持久化和恢复。transient只能修饰变量,不能修饰类和方法

 类似资料:
  • 问题内容: 如何序列化未实现Serializable的对象?我不能将其标记为Serializable,因为该类来自第3方库。 问题答案: 您不能序列化未实现的类,但可以将其包装在可以实现的类中。为此,您应该在包装器类上实现和,以便可以以自定义方式序列化其对象。 首先,使您的非序列化字段。 在中,首先调用流以存储所有非瞬态字段,然后调用其他方法来序列化不可序列化对象的各个属性。 在中,首先调用流以读

  • Form 类中的每个字段不仅负责验证数据,还负责 “清洗” 它 — 将其规范化为一致的格式。 — Django 文档 序列化字段处理基本数据类型和其他数据类型(比如自定义的类)之间的转换。它们还可以对数据进行验证,以及从其父对象中检索和设置值。 注意: 序列化字段都声明在 fields.py 中,但按照惯例,应该使用 from rest_framework import serializers ,

  • 问题内容: 尝试通过关联获取时,“字段列表”中出现未知列“ userDetails.createdAt”。 无需关联即可正常使用。 我的代码如下: 问题答案: 我认为错误是您在序列化中启用了时间戳,但是数据库中的实际表定义不包含时间戳列。 当您执行user.find时,它只会执行,而只接受您实际拥有的列。但是,当您联接时,联接表的每一列都将被别名,这将创建以下查询: 解决方法是禁用任一userDe

  • 从ObjectInputStream的Javadoc: 枚举常量的反序列化方式不同于普通的可序列化或可外部化对象。枚举常量的序列化形式仅由其名称组成;常数的字段值不会被传输。要反序列化枚举常量,ObjectInputStream从流中读取常量名称;然后通过调用静态方法Enum获得反序列化常量。valueOf(类,字符串),枚举常量的基类型和接收到的常量名称作为参数。与其他可序列化或可外部化的对象一

  • 问题内容: 我有: 在MyClass2中是无法序列化的属性。如何序列化(和反序列化)此对象? 更正:MyClass2当然不是接口,而是类。 问题答案: 正如其他人指出的那样,Josh Bloch的Effective Java的 第11章是有关Java序列化的必不可少的资源。 该章中与您的问题有关的几点: 假设您要序列化MyClass2中不可序列化字段的状态,则MyClass必须可以直接访问该字段,

  • 如果接口只是一个标记接口,用于在 java 中传递有关类的某种元数据 - 我有点困惑: 在阅读了java的序列化算法(元数据从下到上,然后从上到下的实际实例数据)的过程之后,我无法真正理解哪些数据不能通过该算法进行处理。 简而言之: 哪些数据可能导致? 我怎么知道我不应该为我的类添加子句?