Я не понимаю, почему вы бы проверили, является ли значение экземпляром void
(или Void
), поскольку, как сказано n-й раз, не может быть создан, или даже расширен без взлома с отражением.Однако для более полезной ситуации, если вы хотите знать, относится ли данный Class
к типу void, вы бы не использовали instanceof
, а вместо этого ваш параметр метода имел бы тип Class<?>
.Примером теста может быть:
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);
}
}
, который выдаст
void = true
Могут быть и другие варианты использования этого метода, но сейчас я не вижу других.