Die häufigste Verwendung von Void
ist für die Reflexion, aber das ist nicht der einzige Ort, wo es verwendet werden kann.
void
ist ein Schlüsselwort, das bedeutet, dass eine Funktion keinen Wert ergibt.
java.lang.Void
ein Referenztyp ist, dann gilt folgendes:
Void nil = null;
(so weit es nicht interessant ist ...)
Als Ergebnis Typ (eine Funktion mit einem Rückgabewert von Geben Sie Void
) es bedeutet, dass die Funktion * immer * null
zurückgibt (es kann nichts anders als null
zurückgeben, da Void
keine Instanzen hat).
Void function(int a, int b) {
//do something
return null;
}
Warum sollte ich eine Funktion, dass immer kehrt null gefallen hat?
Vor der Erfindung von Generika hatte ich keinen Anwendungsfall für Void
.
Mit Generika gibt es einige interessante Fälle. Zum Beispiel ist ein Future<T>
ein Halter für das Ergebnis einer asynchronen Operation, die von einem anderen Thread durchgeführt wird. Future.get
gibt den Operationswert (vom Typ T
) zurück und blockiert solange, bis die Berechnung ausgeführt wird.
Aber ... was ist, wenn es nichts gibt, das zurückkommt? Einfach: Verwenden Sie eine Future<Void>
. In Google App Engine gibt der Asyncronous Datastore Service delete
einen Future<Void>
zurück.Wenn get()
in dieser Zukunft aufgerufen wird, wird null
zurückgegeben nach das Löschen abgeschlossen ist. Man könnte ein ähnliches Beispiel mit Callable s schreiben. Ein anderer Anwendungsfall ist ein Map
ohne Werte, d.h. ein Map<T,Void>
. Solch eine Karte verhält sich wie eine Set<T>
, dann kann es nützlich sein, wenn es keine äquivalente Implementierung von Set
gibt (zum Beispiel gibt es keine WeakHashSet
, dann könnte man eine WeakHashMap<T,Void>
verwenden).
Es würde helfen, wenn wir den Code sehen konnte, die zu brechen war. –
Ich werde ein kleines Snippet hinzufügen. nur aufräumen – Josh
übrigens können Sie auch versuchen myAsyncTask.execute (new Void [1]); = D –