有一个Java Void(大写的V)引用类型。我见过的唯一情况是将Callables 参数化final Callable<Void> callable = new Callable<Void>() { public Void call() { foobar(); return null; } };Java Void引用类型还有其他用途吗?除此以外,还能分配其他任何东西null吗?如果是,您有例子吗?
3 回答

翻阅古今
TA贡献1780条经验 获得超5个赞
您可以使用反射创建Void实例,但是它们对任何事情都没有用。无效是一种指示通用方法不返回任何内容的方法。
Constructor<Void> constructor = Void.class.getDeclaredConstructor();
constructor.setAccessible(true);
Void v = constructor.newInstance();
System.out.println("I have a " + v);
打印类似
I have a java.lang.Void@75636731

FFIVE
TA贡献1797条经验 获得超6个赞
所有的原始包装类(Integer,Byte,Boolean,Double,等等)包含在静态到对应的原语类的引用TYPE字段,例如:
Integer.TYPE == int.class
Byte.TYPE == byte.class
Boolean.TYPE == boolean.class
Double.TYPE == double.class
Void最初被创建为放置对void类型的引用的地方:
Void.TYPE == void.class
但是,使用并不会真正获得任何收益Void.TYPE。使用时void.class,很明显您正在使用该void类型进行操作。
顺便说一句,我上一次尝试时,BeanShell无法识别void.class,因此您必须在那使用Void.TYPE。
分享编辑
添加回答
举报
0/150
提交
取消