2010-12-15 6 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(); 
} 

기본적으로 객체의 메소드를 대기열에서 먼저 사용하고 대기열의 뒤에 넣고 다음 객체를 사용하려고합니다. 등 큐에서 마지막 한대기열에서 객체의 메소드 사용하기, Java

예를 들어, 경고의 많은 프로그램이 종료 "글 예외"AWT-EventQueue의-0 "을 발생 object=obj.runTasks(int...) 선 것이

이러한 :.

 
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

코드를 붙여도 컴파일되지 않습니다.를 참조하십시오. 'Object' 란 무엇입니까? Controller.java의 84 번째 줄에 무엇이 있습니다. – Bozho

+0

분명히 전체 코드를 추가하지 않았습니다. Controller.java의 84 행은 위의 코드가 들어있는 메소드를 호출합니다. Modell.java:110은 object = obj.runTasks (int somethingElse)입니다. 나는 방금 변수를 포함하는 것보다 읽기 쉽도록했다고 생각했습니다. – Rickard

답변

0

마지막으로 해결했습니다. 큐를 일부 null 개체와 일부 null이 아닌 개체로 채워서 실현하기가 더 어려워졌습니다.

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

관련 문제