04 maj, 2011

Klassen Void i JDK

Varför finns det en s.k. Wrapperklass för Void i JDK? Att det finns wrappers för primitiver känner vi som javautvecklare till väl, men Void? När används den?

Förklaringen är vid reflection (Reflection API). Beakta följande klass:

public class VoidTest {

 public static void main(String[] args) {
  try {
   Class clazz = VoidTest.class.getMethod("returnNothing", null).getReturnType();
   System.out.println(clazz == Void.TYPE);
   System.out.println(clazz == Void.class);
  } catch (SecurityException e) {
   e.printStackTrace();
  } catch (NoSuchMethodException e) {
   e.printStackTrace();
  }
 }
 
 public void returnNothing(){
  System.out.println("Nothing will be returned");
 }
}

Om inte Wrapperklassen Void fanns skulle det bli krångligt att få tillbaka ett vettigt värde i anropet Method.getReturnType() i vårt exempel.

Inga kommentarer:

Skicka en kommentar