【发布时间】:2011-06-09 20:43:57
【问题描述】:
我已经实例化了一个 implements Serializable 的类,我正在尝试像这样流式传输该对象:
try{
Socket socket = new Socket("localhost", 8000);
ObjectOutputStream toServer = new ObjectOutputStream(socket.getOutputStream());
toServer.writeObject(myObject);
} catch (IOException ex) {
System.err.println(ex);
}
到目前为止一切都很好,对吧?然后我尝试像这样读取该对象的字段:
//This is an inner class
class HandleClient implements Runnable{
private ObjectInputStream fromClient;
private Socket socket; // This socket was established earlier
try {
fromClient = new ObjectInputStream(socket.getInputStream());
GetField inputObjectFields = fromClient.readFields();
double myFristVariable = inputObjectFields.get("myFirstVariable", 0);
int mySecondVariable = inputObjectFields.get("mySecondVariable", 0);
//do stuff
} catch (IOException ex) {
System.err.println(ex);
} catch (ClassNotFoundException ex) {
System.err.println(ex);
} finally {
try {
fromClient.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
但我总是得到错误:
java.io.NotActiveException: not in call to readObject
这是我第一次流式传输对象而不是原始数据类型,我做错了什么?
奖金
当我让它正常工作时,整个类是否与序列化对象一起传递(即我可以访问对象类的方法)吗?我的阅读表明整个类与对象一起传递,但到目前为止我一直无法使用对象方法。我究竟如何调用对象的方法?
除了上面的代码之外,我还尝试了readObject 方法,但我可能也用错了,因为我无法让它工作。请赐教。
【问题讨论】:
标签: java serialization object stream