Использование методов в объектах в очереди, Java - PullRequest
0 голосов
/ 15 декабря 2010
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();
}

В основном я пытаюсь использовать методы объекта сначала в очереди, затем помещать его в конец очереди, использовать следующий объект, помещать этот последний в очередь и т. Д.

Строка 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)

У кого-нибудь есть решение? Спасибо!

Ответы [ 2 ]

1 голос
/ 16 декабря 2010

Утверждения могут помочь отладить такого рода проблемы. Если вы ожидаете, что все элементы в очереди будут нулевыми, рассмотрите возможность использования кода следующим образом:

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

Если вы вытянете нулевой объект из очереди, что является неожиданным, программа умрет при утверждении. Причиной проблемы часто становится намного яснее, когда утверждения на месте.

Вам нужно будет запустить с -ea, чтобы включить утверждения. Смотри http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html

0 голосов
/ 15 декабря 2010

Я наконец решил это.Я заполнял очередь несколькими нулевыми объектами и некоторыми ненулевыми объектами, что усложняло реализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...