Différence entre void et Void en Java

Mehvish Ashiq 12 octobre 2023
  1. Différence entre void et Void en Java
  2. Utiliser le void et Void en Java
Différence entre void et Void en Java

Le type java.lang.Void est analogue au type java.lang.Integer. Le Void s’enroule autour de void et étend la classe d’objet, et le Void n’a pas de valeurs possibles, ce qui rend le java.lang.Void non instanciable.

Notre objectif est de trouver et de comprendre la différence entre Void et void dans la programmation Java. Nous apprendrons également comment et où nous pouvons utiliser Void ou void dans la programmation Java.

Différence entre void et Void en Java

La différence fondamentale entre les deux (Void et void) est que void est un type primitif tandis que Void, un type de référence qui hérite de Object. Bien qu’aucun d’entre eux n’ait de valeurs possibles, les deux sont de types différents.

Le void (tout en minuscules) est le type incorrect utilisé pour désigner l’absence de la valeur. En raison de l’absence de valeur dénotable, void signifie qu’aucune valeur ne sera renvoyée par une fonction ou une méthode.

Par contre, java.lang.Void retourne l’objet, on peut retourner null pour faire les choses légalement, et c’est le seul moyen de le faire. Il n’est pas instanciable car il a un constructeur privé qui n’est pas accessible de l’extérieur.

Utiliser le void et Void en Java

Nous utilisons void (tout en minuscules) lorsque nous voulons qu’une méthode ne renvoie aucune valeur. Comme dans l’exemple suivant, la méthode printMessage() ne renvoie rien mais imprime un message à l’écran.

Exemple de code pour void (Main.java) :

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

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

Nous pouvons utiliser Void (capitaliser la première lettre) lors de la réflexion en programmation Java car il existe certaines situations où nous devons présenter le mot-clé Void comme objet.

En même temps, nous ne sommes pas autorisés à créer l’objet de la classe Void, et c’est pourquoi son constructeur est privé et n’est pas accessible de l’extérieur.

De plus, on ne peut pas hériter de la classe Void car c’est une classe finale. Cela nous amène à utiliser Void en réflexion, où nous obtenons le type de retour d’une méthode sous la forme void.

Exemple de code pour 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
  }
}

Exemple de code pour Void (TestOne.java):

class TestOne {
  public void Test() {}
}

Production:

True
False

On peut aussi obtenir le type de retour d’une méthode comme void avec des génériques. Nous voulons écrire le code d’une classe générique qui peut renvoyer void pour quelque chose.

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

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

Production:

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

Article connexe - Java Void