我正在编写一个类来简化套接字的处理。我有一个包含接收到的消息的InputStream,我想在用户声明我的类时将其转换为用户定义的另一个类。这就是代码
private T read() throws IOException, ClassNotFoundException{
ObjectInput ois = new ObjectInputStream (reader);
T message = (T) ois.readObject();
return message;
}
但是它抛出一个异常:ClassNotFoundException我不知道为什么。当T是String类型时,它工作得很好,但当它是一个自定义类时,它就不工作了。
我问的是p提前谢谢大家
请仔细检查在您的序列化对象中定义的所有类型是否也在您的类型T
中定义。
我认为@fabian是正确的
这似乎不是剧组的问题,而是从ObjectInputStream
中读取Object
s。以下是ObjectInputStream.readObject
对ClassNotFoundException
的描述:
找不到序列化对象的类。
这意味着您忘记将InputStream
中的一些数据类添加到您的类路径中。
你能试着把message改成Object
吗?
ObjectInput ois = new ObjectInputStream (my_input_stream);
Object message = (Object) ois.readObject();
或者尝试在方法声明中添加<T>
:
private <T> T read() throws IOException, ClassNotFoundException{
ObjectInput ois = new ObjectInputStream (reader);
T message = (T) ois.readObject();
return message;
}