我有用於存儲隊列內容的QStorage類。Java:使用文件中的ObjectInputStream讀取隊列對象給出nullPointerException
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' – alfasin
那麼,我已經實現了'Serializable',忘了在這裏顯示。仍然得到相同的錯誤。 – Winn
如果在空文件的情況下問題是NPE,請將其捕獲並返回一個「null」對象。 – alfasin