2012-12-06 80 views
10

下面的代碼給我編譯時的錯誤:缺少返回值和缺少返回語句,我會返回什麼值這個Void TypeVoid方法缺少返回值?

final SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() 
{ 
    @Override 
    protected Void doInBackground() throws Exception 
    { 
     // some code 
     if (something) 
     { 
      return; 
     } 
    } 
} 
+0

你的空格是大寫的。 –

+2

使用返回null。請參閱http://stackoverflow.com/questions/643906/uses-for-the-java-void-reference-type – jontro

+0

我不能使用虛擬小寫字母,因爲泛型 – HericDenis

回答

23

Voidvoid,將其更改爲void類型,如果你不想返回任何東西。

Void是一個類,void是類型。

/** 
* The {@code Void} class is an uninstantiable placeholder class to hold a 
* reference to the {@code Class} object representing the Java keyword 
* void. 
* 
* @author unascribed 
* @since JDK1.1 
*/ 

如果你想Void,那麼你需要在末尾添加return聲明。

例子:

protected Void doInBackground() throws Exception 
    { 
     // some code 
     if (something) 
     { 
      return null; 
     } 
     return null; 
    } 
+0

謝謝,這就是我的想法,但我不知道它會給一些NullPointerException或什麼。謝謝 – HericDenis

+0

@HericDenis:我不認爲它失敗。看到這個討論http://stackoverflow.com/questions/4261666/how-do-i-wait-for-a-swingworkers-doinbackground-method – kosa

+0

有一個空缺失後,第一個返回語句 – HericDenis

1

檢查。它要求返回Void with captital V而不是簡單的空洞

final SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() 
      { 
       @Override 
       protected Void doInBackground() throws Exception 
       { 
       // my code here 
        return null; 
       } 
      }; 
}