2012-12-06 13 views
10

Poniższy kod daje mi błędy podczas kompilacji: brakuje wartości zwracanej i brakującej instrukcji return, jaką wartość zwrócę dla tego Void Type?Brakująca wartość powrotna dla metody Void?

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

Twoja pustka jest wielka. –

+2

Użyj return null. Zobacz http://stackoverflow.com/questions/643906/uses-for-the-java-void-reference-type – jontro

+0

Nie mogę używać Void małymi literami z powodu generycznych – HericDenis

Odpowiedz

23

Void nie void, zmień go na utratę typ, jeśli nie chcesz, aby powrócić niczego.

Pustka jest klasą, pustka jest typem.

/** 
* 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 
*/ 

Jeśli chcesz Void, to trzeba dodać return oświadczenie na końcu.

Przykład:

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

Dzięki, to właśnie myślałem, ale nie byłem pewien, czy to da jakiś wyjątek NullPointerException czy coś takiego. Dzięki – HericDenis

+0

@HericDenis: Nie sądzę, aby się nie udało. Zobacz tę dyskusję http://stackoverflow.com/questions/4261666/how-do-i-wait-for-a-swingworkers-doinbackground-method – kosa

+0

po zerowym oświadczeniu zwrotnym brakuje zerowej wartości. – HericDenis

1

sprawdzić. Prosi o zwrot Voidu za pomocą captital V, a nie za zwykłą pustkę:

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