當我嘗試將可運行隊列傳遞給SwingUtilities.invokeLater
時,我收到了一個間歇性拋出的異常,大約每執行一次應用程序中的一次。它似乎只發生在應用程序啓動時,也許在事件調度線程正確設置之前?我不太確定,但如果應用程序正常運行,那麼在此之後我就沒有任何問題了。這裏是例外:爲什麼SwingUtilities.invokeLater會拋出一個NullPointerException?
Exception in thread "Thread-3" java.lang.NullPointerException
at java.awt.EventQueue.invokeLater(Unknown Source)
at javax.swing.SwingUtilities.invokeLater(Unknown Source)
at com.mypackage.MyClass.myMethod(MyClass.java:126)
我不知道爲什麼SwingUtilities.invokeLater
的電話會這樣死去。必須有一些愚蠢的事情發生。作爲參考,這裏是MyClass.java
實際的源代碼:
118: public void myMethod(final VariableA variableA, final VariableB variableB, final VariableC variableC) {
119: if (variableA == null)
120: throw new NullPointerException("no variable A");
121: if (variableB == null)
122: throw new NullPointerException("no variable B");
123: if (variableC == null)
124: throw new NullPointerException("no variable C");
125:
126: SwingUtilities.invokeLater(new Runnable() {
127: @Override
128: public void run() {
129: MyClass.this.processMyMethod(variableA, variableB, variableC);
130: });
131: }
132: }
任何這裏的想法可能會造成什麼呢?
你是從構造函數調用這個方法嗎?在這種情況下,MyClass.this可能爲空。 –
不知道這是否會有所幫助,但是你可以發佈'processMyMethod()'嗎? –
@GáborBakos這是一個很好的觀點。 –