【发布时间】:2013-11-03 16:45:07
【问题描述】:
我有存储队列内容的 QStorage 类。
class QStorage{
Queue<A> q = new PriorityQueue<A>(5);
public Queue<a> readQ(){
try{
FileInputStream fin = new FileInputStream("/home/requestQ.ser");
ObjectInputStream ois = new ObjectInputStream(fin);
q = (Queue)ois.readObject();
}catch(Exception e){}
return q;
}
}
在另一个类中,我正在调用上述类的 readQ() 方法来存储队列内容 将文件放到另一个队列中。
class MyQ{
public static void main(String args[]){
QueueStorage qs = new QueueStorage();
Queue<A> myQ = new PriorityQueue<A>(5);
myQ = qs.readQ();
//...some other stuffs goes here
}
}
这里如果队列的一些条目已经存储在文件中,readQ() 会正确返回这些条目。但是如果文件中没有存储条目(我的意思是存储了空队列) 然后这个方法给出 nullPointerException 并且我的程序停止工作。
注意:我要求我应该检查存储的内容而不知道是否 是否为空。
请帮忙。谢谢。
【问题讨论】:
-
你忘了实现
Serializable -
好吧,我已经实现了
Serializable,忘记在这里展示了。仍然出现同样的错误。 -
如果问题是空文件的NPE,捕获它并返回一个
null对象。 -
@alfasin:如果有一些存储的条目,请查看我的程序是否正常运行。只有在没有存储条目时才会出现问题。
-
@alfasin:是的,我忘了
return null例外。它现在工作。非常感谢。
标签: java