我正在使用Java 1.4和Log4J。
我的一些代码涉及序列化和反序列化值对象(POJO)。
我的每个POJO都声明了一个记录器
private final Logger log = Logger.getLogger(getClass());
序列化程序抱怨org.apache.log4j.Logger不是Serializable。
我应该用吗?
private final transient Logger log = Logger.getLogger(getClass());
代替?
发布于 2019-05-22 08:45:52
将记录器字段声明为静态或瞬态。
两种方式都确保writeObject()方法在序列化期间不会尝试将字段写入输出流。
通常记录器字段被声明为静态,但是如果您需要它作为实例字段,则只需将其声明为瞬态,因为它通常用于任何非可序列化字段。在反序列化时,logger字段将为null,因此您必须实现readObject()方法以正确初始化它。
发布于 2019-05-22 09:44:49
尝试使Logger静态。你不必关心序列化,因为它是由类加载器处理的。
https://stackoverflow.com/questions/-100001189
复制相似问题