Hacía mas de 2 años que quería hacer este post, porque me parece algo bastante curioso. De hecho fue en el 2012 que me enteré de la existencia de la clase java.lang.Void pero lo verdaderamente interesante es que esta clase existe desde la versión 1.1 del jdk.
De acuerdo a la documentación de la API “La clase Void es un comodín para almacenar una referencia a objetos de clases representando la palabra clave void.”
A continuación un ejemplo que muestran el uso de la clase Void. La primera parte es con Generics (que de hecho fue así como me enteré de su existencia), lo que me resulta curioso es que quizás ahora este sea su uso mas extendido aun cuando Generics apareció en la versión 5 de Java. La segunda parte es con reflection el cual creo que fue el primer caso de uso de esta clase Void.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
package com.josedeveloper.example; interface Ejecutable { public T ejecutar(); } class SumaEjemplo implements Ejecutable { int a; int b; public SumaEjemplo(int a, int b) { this.a = a; this.b = b; } public Integer ejecutar() { return a + b; } } class PrintEjemplo implements Ejecutable { public Void ejecutar() { System.out.println("Esta clase no devuelve nada"); return null; } public void prueba() { System.out.println("Prueba"); } } public class VoidExample { public static void main(String[] args) throws NoSuchMethodException, SecurityException { Ejecutable suma = new SumaEjemplo(10, 15); System.out.println("Resultado: " + suma.ejecutar()); Ejecutable print = new PrintEjemplo(); print.ejecutar(); //Ejemplo de reflection PrintEjemplo ejemploReflection = new PrintEjemplo(); if (ejemploReflection.getClass().getMethod("prueba").getReturnType() == Void.TYPE) System.out.println("el es del tipo void"); } } |