I fail to see why you would check if a value is an instance of void (or Void ) since, like said nth times, cannot be instanciated, or even extended without hacking with reflexion. However, for a more useful situation, if you want to know if a given Class is of a void type, you would not use instanceof and your method parameter would be of type Class<?> instead. A test case would be :

public class VoidCheckTest { public static void main(String...args) throws SecurityException, NoSuchMethodException { Class<VoidCheckTest> c = VoidCheckTest.class; Method m = c.getMethod("main", String[].class); System.out.println(m.getReturnType().getName() + " = " + isVoid(m.getReturnType())); } private static boolean isVoid(Class<?> t) { return Void.class.isAssignableFrom(t) || void.class.equals(t); } }

which would output

void = true

There might other use cases for this method, but I don't see any other right now.