Java 类实现可序列化的对象的notserializableexception
我有这门课Java 类实现可序列化的对象的notserializableexception,java,serialization,Java,Serialization,我有这门课 public class wordObject implements java.io.Serializable { String wordName; int occCount; int count; HashMap<Integer, Double> lineDict; int[] mat; public wordObject(String name,int num)
public class wordObject implements java.io.Serializable
{
String wordName;
int occCount;
int count;
HashMap<Integer, Double> lineDict;
int[] mat;
public wordObject(String name,int num)
{
wordName = name;
occCount=1;
count = num;
lineDict=new HashMap<Integer,Double>(lineC);
mat = new int[lineC];
}
}
我得到这个错误
Exception in thread "main" java.io.NotSerializableException: searchTAemd
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
欢迎任何帮助
编辑:我已检查HashMap是否已实现可序列化。执行序列化时,对象可以访问的所有对象(即其成员变量及其成员的成员等)都必须可序列化,否则会出现此异常。这是对象序列化的常见问题因为
wordObject
是一个内部类,并且内部类始终包含对其外部类的隐式引用,所以除非外部类也可序列化,否则无法序列化内部类。实际上,甚至不建议尝试
从
内部类的序列化(即不是
静态成员类),包括本地类和匿名类
出于几个原因,我强烈地劝阻你。因为内部阶级
在非静态上下文中声明包含隐式非瞬态
引用封闭类实例,序列化此类内部
类实例将导致其关联外部对象的序列化
类实例
obj
是wordObject
类型的对象吗?错误表明它来自searchtaemad
这看起来完全可以序列化。你确定obj是wordObject的一个实例吗;它工作正常。。。obj必须引用另一个不可序列化的类型。@HunterMcMillen Yesobj
属于wordObject
类型,searchTAemd
是放置所有代码的类的名称。变量lineC
来自何处?父类?你说他的类的哪个部分是不可序列化的?从wordObject的类定义来看,所有字段都是可序列化的。
Exception in thread "main" java.io.NotSerializableException: searchTAemd
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)