当我使用Serializable和我的类以及使用Scanner瞬态时,如何解决NullPointerException?

时间:2012-02-04 12:07:10

标签: java nullpointerexception java.util.scanner serializable transient

我想知道我需要做些什么来解决这个错误。 由于在我的班级中使扫描器成为我想要序列化的瞬态,我现在得到一个nullpointerexception,其中第一个使用scanner(in)的实例。

即in.next();

这是我第一次在工作中使用Serializable。我已经制作了所有顶级类Serializable。

我想知道是否必须对我的数据结构进行任何操作,例如数组,arraylists等。需要将哪些内容标记为瞬态?

任何帮助非常感谢

1 个答案:

答案 0 :(得分:2)

序列化对象时,不保留瞬态字段中的值。一种解决方案是实现一个writeObject方法,在对象反序列化后重新初始化瞬态字段,如下所述:http://java.sun.com/developer/technicalArticles/Programming/serialization/

但是,在可序列化类中使用Scanner对象听起来有点奇怪。您应该将其拆分为两个类 - 一个包含您要序列化的数据的可序列化类,另一个用于执行用户界面或文件读取的类或者您正在使用Scanner执行的任何操作。