Unterschied zwischen void und Void in Java

Mehvish Ashiq 12 Oktober 2023
  1. Unterschied zwischen void und Void in Java
  2. Verwendung von das void und Void in Java
Unterschied zwischen void und Void in Java

Der Typ java.lang.Void ist analog zum Typ java.lang.Integer. Das Void umschließt void und erweitert die Objektklasse, und das void hat keine möglichen Werte, wodurch das java.lang.Void nicht instanziierbar ist.

Unser Ziel ist es, den Unterschied zwischen Void und void in der Java-Programmierung zu finden und zu verstehen. Wir werden auch lernen, wie und wo wir Void oder void in der Java-Programmierung verwenden können.

Unterschied zwischen void und Void in Java

Der grundlegende Unterschied zwischen beiden (Void und void) besteht darin, dass void ein primitiver Typ ist, während Void ein Referenztyp ist, der vom Object erbt. Obwohl keiner von ihnen mögliche Werte hat, sind beide von unterschiedlichem Typ.

void(alles Kleinbuchstaben) ist der falsche Typ, der verwendet wird, um auf das Fehlen des Werts hinzuweisen. Da es keinen benennbaren Wert hat, bedeutet void, dass von einer Funktion oder Methode kein Wert zurückgegeben wird.

Andererseits gibt java.lang.Void das Objekt zurück, wir können null zurückgeben, um Dinge legal zu tun, und es ist die einzige Möglichkeit, dies zu tun. Es ist nicht instanziierbar, da es einen privaten Konstruktor hat, auf den von außen nicht zugegriffen werden kann.

Verwendung von das void und Void in Java

Wir verwenden void (alles Kleinbuchstaben), wenn wir möchten, dass eine Methode keinen Wert zurückgibt. Wie im folgenden Beispiel gibt die Methode printMessage() nichts zurück, sondern gibt eine Nachricht auf dem Bildschirm aus.

Beispielcode für void (Main.java):

public class Main {
  static void printMessage() {
    System.out.println("printMessage function just got executed!");
  }

  public static void main(String[] args) {
    printMessage();
  }
}

Wir können Void (den ersten Buchstaben groß schreiben) verwenden, während wir in der Java-Programmierung Reflexionen durchführen, da es einige Situationen gibt, in denen wir das Schlüsselwort void als Objekt präsentieren müssen.

Gleichzeitig dürfen wir das Objekt der Klasse Void nicht erzeugen, weshalb dessen Konstruktor privat ist und von aussen nicht zugegriffen werden kann.

Außerdem können wir die Klasse Void nicht erben, da es sich um eine finale Klasse handelt. Dies führt uns dazu, Void in Reflektion zu verwenden, wo wir den Rückgabetyp einer Methode als void erhalten.

Beispielcode für Void (Main.java):

public class Main {
  public static void main(String[] args) throws SecurityException, NoSuchMethodException {
    Class c1 = TestOne.class.getMethod("Test", (Class<?>[]) null).getReturnType();
    System.out.println(c1 == Void.TYPE); // true
    System.out.println(c1 == Void.class); // false
  }
}

Beispielcode für Void (TestOne.java):

class TestOne {
  public void Test() {}
}

Ausgabe:

True
False

Wir können den Rückgabetyp einer Methode auch mit Generika als void erhalten. Wir wollen den Code für eine generische Klasse schreiben, die void für etwas zurückgeben kann.

abstract class Foo<T> {
  abstract T bar();
}

class Bar extends Foo<Void> {
  Void bar() {
    return (null);
  }
}

Ausgabe:

True
False
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Verwandter Artikel - Java Void