“Void 实例”是否总是返回 false?
2022-09-01 21:48:10
此方法可以以某种方式返回吗?true
public static <T> boolean isVoid(T t)
{
return t instanceof Void;
}
此方法可以以某种方式返回吗?true
public static <T> boolean isVoid(T t)
{
return t instanceof Void;
}
是的,但我敢肯定这并不是很有用:
public static void main(final String[] args) throws Exception {
final Constructor c = Void.class.getDeclaredConstructors()[0];
c.setAccessible(true);
System.out.println(c.newInstance(null) instanceof Void);
}
类无法实例化,因此通常您的代码不需要处理实例。上面的代码片段只是一个例子,说明在使用反射时可以释放出什么破坏... ;-)Void
Void
我不明白为什么你会检查一个值是否是(或)的实例,因为,就像第n次说的那样,不能在没有反射的情况下被实例化,甚至无法扩展。但是,对于更有用的情况,如果您想知道给定的给定是否为 void 类型,则不会使用,而您的方法参数将是类型。测试用例是:void
Void
Class
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
此方法可能还有其他用例,但我现在看不到任何其他用例。