【发布时间】:2023-04-11 09:03:01
【问题描述】:
我正在编写一个类来简化套接字的处理。我有一个包含接收到的消息的 InputStream,我想在用户声明我的类时将其转换为用户定义的另一个类。这就是代码
private T read() throws IOException, ClassNotFoundException{
ObjectInput ois = new ObjectInputStream (reader);
T message = (T) ois.readObject();
return message;
}
但它会抛出异常:ClassNotFoundException 我不知道为什么。当 T 是 String 类型时,它工作得很好,但当它是一个自定义类时,它就不行了。
所以我在这里问:p 提前谢谢你
【问题讨论】:
-
如果没有在方法或类声明中先定义它,就不能键入 T。
-
不要将转换与转换混淆。在 Java 中,您只能将引用转换为对象已经是的类型。它不会将
String转换为MyClass。如果引用的对象已经是 MyClass,它只会让您将Object转换为MyClass。如果要转换,则必须显式处理此转换。 -
@scorpion : T 是我的班级宣言。 Peter Lawrey:我的 inputStream 中的数据已经是 MyClass 类型
标签: java sockets exception casting stream