或以其他方式保存它。 我尝试创建一个继承自AttributedString并实现Serializable的类,但事情并没有成功。
答案 0 :(得分:2)
正如您所观察到的,AttributedString
类没有实现Serializable
并且没有提供无参数构造函数。因此序列化失败。 AFAIK,Java SE库中没有任何东西可以直接处理这个问题。
但是,我找到了一个名为org.jfree.io.SerialUtilities
的第三方库,它提供了通过AttributedString
和ObjectOutputStream
序列化和反序列化ObjectInputStream
个对象的方法。
要使用这些方法,通常需要为使用这些类型的任何可序列化类编写自定义readObject
和writeObject
方法。我在这里找到了一些例子:
答案 1 :(得分:0)
https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html声明如下:
在反序列化期间,非序列化类的字段将是 使用公共或受保护的无参数构造函数初始化 类。必须可以访问子类的无参数构造函数 序列化。将恢复可序列化子类的字段 来自溪流。
AttributedString没有扩展子类可访问的no-arg构造函数,因此反序列化将失败。