写入具有Vector属性的对象时获取java.io.NotSerializableException

写入具有Vector属性的对象时获取java.io.NotSerializableException,java,vector,Java,Vector,我有一个类State,它有一个向量变量State,并在其setter函数中设置状态的向量列表 class State implement Serializable{ private Vector state; //its getters and setters } 在类B中,我从会话中获取状态类,然后将其分配给相同的状态对象,然后使用写入对象方法处理该类 class B { State _state = (State) session.getAt

我有一个类
State
,它有一个向量变量State,并在其setter函数中设置状态的向量列表

class State implement Serializable{  
    private Vector state;  
    //its getters and setters  
}
类B
中,我从会话中获取
状态
类,然后将其分配给相同的
状态
对象,然后使用
写入对象
方法处理该类

class B {  
       State _state  = (State) session.getAttribute("_stateKey");  
       ByteArrayOutputStream baos = new ByteArrayOutputStream();  
       ObjectOutputStream oos = new ObjectOutputStream(baos);  
       oos.writeObject(_state); // at this line i am getting java.io.NotSerializableException
    }

有人请帮我解释一下为什么我会出现这个错误…

你的类应该实现
可序列化接口,因为
向量
确实实现了它。所以问题在于你自己的
课程

谢谢大家。我解决了这个问题。我没有在一个类上实现Serializable接口,我从中得到一个值,并将其放入列表中。感谢您的建议

您在
状态下存储哪些类型的对象
?这些类型之一是不可序列化的吗?您在
向量中放入了什么?您放在其中的对象也必须是可序列化的。而且,您不应该使用
Vector
,因为它是一个遗留集合类。改用
ArrayList
。另外,使用泛型。NotSerializableException应该准确地告诉您哪个类是罪魁祸首。@Jesper-有没有办法将数组列表类型转换为vector。这是一个旧代码,我必须使用vector,因为我在这个vector中输入的列表也是vector类型的。早些时候我们使用字符串,当时一切都很好,但在更改为Vector之后,这个错误strts。是否与oos.writeObject(_状态)有关;wrightObject方法是否不允许类在该Cals中的任何属性是向量时写入?我也尝试在类B上实现Serializable接口,但仍然存在相同的问题。这意味着您有其他不可序列化的对象。看起来向量中的对象没有实现Serializable接口。这和班级无关,也许是吧。
B类
向量
中任何不可序列化的对象都会导致该错误。@user1782009-可以发布完整堆栈跟踪吗?它将给出一个更清晰的概念,哪一个物体是罪魁祸首。