2010-12-15 9 views
0
object = new Object(int something); 
for(int i=0;i<5;i++) { 
    //obj=queue.element(); 
    obj=queue.remove(); 
    object=obj.runTasks(int somethingElse); 
    queue.offer(obj); 
    //queue.remove(); 
} 

私は基本的にキューの最初にオブジェクトのメソッドを使用して、キューの後ろに配置し、次のオブジェクトを使用しようとしていますそのキューの最後の1、などキュー内のオブジェクトのメソッドを使用する、Java

警告の多くで、終了するプログラムを引き起こしobject=obj.runTasks(int...)ライン、例えば「例外スレッドで 『AWT-EventQueueの-0』

また、これら:。

 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at projekt.Modell.körSaker(Modell.java:110) 
    at projekt.Controller$CloseListener.actionPerformed(Controller.java:84) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

誰かが解決策を持っていますか? ありがとう!

+1

貼り付けたコードはコンパイルされていません。 'オブジェクト'とは何ですか? Controller.javaの84行目は何ですか? – Bozho

+0

明らかに私はコード全体を追加しませんでした。 Controller.javaの84行目は、上記のコードを含むメソッドを呼び出します。 Modell.java:110はobject = obj.runTasks(int somethingElse)です。私はちょうどそれが私の変数を含んでいたよりも読みやすくすると思った。 – Rickard

答えて

0

私はついにそれを解決しました。私はいくつかのヌルオブジェクトといくつかの非ヌルオブジェクトをキューに入れていました。これによって、実現が難しくなりました。

1

アサーションは、この種の問題のデバッグに役立ちます。あなたは、キュー内のすべての要素がnullになることが予想される場合、このようなコードを使用することを検討してください:

obj=queue.remove(); 
assert(obj != null); 
object=obj.runTasks(int somethingElse); 

を使用すると、予想外で待ち行列のうち、nullオブジェクトを引っ張ると、プログラムがアサートに死んでしまいます。アサーションが存在すると、問題の原因がより明確になることがよくあります。

アサーションを有効にするには、-eaを指定して実行する必要があります。 http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html

関連する問題