Diferencia entre void y Void en Java

Mehvish Ashiq 12 octubre 2023
  1. Diferencia entre void y Void en Java
  2. Usa el void y Void en Java
Diferencia entre void y Void en Java

El tipo java.lang.Void es análogo al java.lang.Integer. El Void envuelve void y extiende la clase de objeto, y void no tiene ningún valor posible, lo que hace que java.lang.Void no sea instanciable.

Nuestro objetivo es encontrar y comprender la diferencia entre Void y void en la programación Java. También aprenderemos cómo y dónde podemos usar Void o void en la programación Java.

Diferencia entre void y Void en Java

La diferencia básica entre ambos (Void & void) es que void es un tipo primitivo mientras que Void, un tipo de referencia que hereda del Object. Aunque ninguno de ellos tiene valores posibles, ambos son de diferentes tipos.

El void (todo en minúsculas) es el tipo impropio que se utiliza para referirse a la ausencia del valor. Debido a que no tiene ningún valor identificable, void significa que una función o método no devolverá ningún valor.

Por otro lado, java.lang.Void devuelve el objeto, podemos devolver null para hacer las cosas de forma legal, y es la única forma de hacerlo. No es instanciable porque tiene un constructor privado al que no se puede acceder desde el exterior.

Usa el void y Void en Java

Usamos void (todo en minúsculas) cuando queremos que un método no devuelva ningún valor. Como en el siguiente ejemplo, el método printMessage() no devuelve nada sino que imprime un mensaje en pantalla.

Código de ejemplo para void (Main.java):

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

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

Podemos usar Void (la primera letra en mayúscula) mientras hacemos la reflexión en la programación de Java porque hay algunas situaciones en las que necesitamos presentar la palabra clave void como el objeto.

Al mismo tiempo, no se nos permite crear el objeto de la clase Void, y por eso su constructor es privado y no se puede acceder desde el exterior.

Además, no podemos heredar la clase Void porque es una clase final. Esto nos lleva a usar Void en la reflexión, donde obtenemos el tipo de retorno de un método como void.

Código de ejemplo para 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
  }
}

Código de ejemplo para Void (TestOne.java):

class TestOne {
  public void Test() {}
}

Producción :

True
False

También podemos obtener el tipo de retorno de un método como void con genéricos. Queremos escribir el código para una clase genérica que pueda devolver void por algo.

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

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

Producción :

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

Artículo relacionado - Java Void