キューの内容を格納する 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を返し、私のプログラムは動作を停止します。
注: 格納されたコンテンツが空かどうかを知らずにチェックする必要があるという要件があります。
助けてください。ありがとう。