Als ich heute den Quellcode überprüfte, entdeckte ich die Klasse java.lang.void. Was ist die Funktion davon?
Probieren Sie es zuerst über den Quellcode aus
Paket java.lang;/** * Die {@Code void} -Klasse ist eine nicht ständiger Platzhalterklasse, um eine Referenz auf das {@Code -Klasse} -Objekt zu halten, das das Java -Schlüsselwort * void darstellt. * * @Author Uncounted * @Since Jdk1.1 * /public FinalClass void { /** * Das {@code-Klasse} Objekt, das den pseudo-Typ darstellt, der * dem Schlüsselwort {@code void} entspricht. */ @Suppresswarnings ("deaktiviert") öffentliche statische endgültige Klasse <void> type = (class <void>) class.getPrimitiveClass ("void"); / * * Die Hohlraumklasse kann nicht instanziiert werden. */ private void () {}}Aus dem Quellcode stammt aus dem Quellcode, dass diese Klasse endgültig ist, kann nicht vererbt werden und das Konstrukt ist privat und kann nicht neu sein.
Was ist die Funktion dieser Kategorie?
Hier ist der Quellcode der Java.lang.Integer -Klasse zuerst
Wir alle wissen, dass die Wrapper -Klasse von int java.lang.Integer ist
Daraus können wir sehen, dass Java.lang.Integer die Wrapper -Klasse von int ist.
In ähnlicher Weise können wir durch den folgenden Quellcode von Java.lang.void sehen, dass Java.lang.void eine Wrapper -Klasse für das Kohls -Schlüsselwort ist.
öffentliche statische endgültige Klasse <void> type = (class <void>) class.getPrimitiveClass ("void");Hohlraumverbrauch
Die void-Klasse ist eine nicht-instabile Platzhalterklasse. Wenn die Methode einen Hohlraumtyp zurückgibt, kann die Methode nur einen Nulltyp zurückgeben.
Beispiele sind wie folgt:
public void test () {return null;}Verwenden Sie Szenario 1:
Future <void> f = pool.submit (new Callable () {@Override public void call () löst Ausnahme aus {...... return null;}});Beispielsweise muss die Schnittstelle mit der Callable -Schnittstelle einen Wert zurückgeben, es werden jedoch nach der tatsächlichen Ausführung keine Daten zurückgegeben. Zu diesem Zeitpunkt können Sie den Hohlraumtyp als Rückgabetyp verwenden.
Verwenden Sie Szenario 2:
Reflektieren Sie alle Methoden mit Rückgabewert void.
public class test {public void hello () {} public static void main (String args []) {für (Methode Methode: test.class.getMethods ()) {if (method.getRetReturnTyPe (). Equals (void.type)) {System.Out.println (methodeName (); }}}}Ausführungsergebnisse:
MainHellowaiwaitwaitnotifyNotifyall
PS: Das Folgende führt den Vergleich und die Verwendung von Java.lang.void und void ein
Das Schlüsselwort für das void bedeutet, dass die Funktion das Ergebnis nicht zurückgibt und ein Schlüsselwort in Java ist.
Java.lang.void ist ein Typ. Weisen Sie beispielsweise einer Hohlraumreferenz einen Wert von Null zu.
Void nil = null;
Durch den Code der Hohlraumklasse können wir sehen, dass der Hohlraumtyp nicht vererbt oder instanziiert werden kann.
public FinalClass void { /** * Das {@code-Klasse} -Objekt, das den pseudo-Typ darstellt, der * dem Schlüsselwort {@code void} entspricht. */ @Suppresswarnings ("deaktiviert") öffentliche statische endgültige Klasse <void> type = (class <void>) class.getPrimitiveClass ("void"); / * * Die Hohlraumklasse kann nicht instanziiert werden. */ private void () {}}Die void als Rückgabeergebnis einer Funktion zeigt an, dass die Funktion NULL zurückgibt (außer dass Null andere Typen nicht zurückgeben kann).
Void function (int a, int b) {// etwas return null; }Bevor Generika erschien, wurde in der Regel in der Reflexion Void verwendet. Beispielsweise druckt der folgende Code den Methodennamen des Rückgabetyps Leere.
public class test {public void print (String v) {} public static void main (String args []) {für (Methode Methode: test.class.getMethods ()) {if (method.getRetReturnTyPe (). Equals (void.type)) {System.out.println (methodeName (); }}}} Nach dem Erscheinen von Generika wird in einigen Szenarien der Hohlraumtyp verwendet. Zum Beispiel wird Future<T> verwendet, um die Ergebnisse zu speichern. Die GET -Methode von Future gibt das Ergebnis zurück (Typ t).
Aber was ist, wenn die Operation keinen Wert zurückgibt? In diesem Fall kann es durch Future<Void> dargestellt werden. Wenn das Ergebnis nach dem Aufrufen von GET berechnet wird, wird es nach der Rückkehr null zurückgegeben.
Darüber hinaus wird auch void in wertlosen Karten verwendet. Zum Beispiel hat Map<T,Void> , sodass die Karte die gleiche Funktion hat wie Set<T> .
Wenn Sie Generika verwenden, muss die Funktion das Ergebnis nicht zurückgeben, oder ein Objekt benötigt den Wert nicht. Dies kann vom Typ Java.lang.void dargestellt werden.
Zusammenfassen
Das obige ist eine detaillierte Erklärung der Klassenanalyse und Verwendung von Java.lang.void, die Ihnen vom Herausgeber vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!