从Object强制转换为T



我正在编写一个类来简化套接字的处理。我有一个包含接收到的消息的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.readObjectClassNotFoundException的描述:

找不到序列化对象的类。

这意味着您忘记将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;
}

相关内容

  • 没有找到相关文章

最新更新