今天在查看源码的时候发现了 java.lang.Void 的类。这个有什么作用呢?

先通过源码查看下

package java.lang;/*** The {@code Void} class is an uninstantiable placeholder class to hold a* reference to the {@code Class} object representing the Java keyword* void.** @author  unascribed* @since   JDK1.1*/
public final
class Void {/*** The {@code Class} object representing the pseudo-type corresponding to* the keyword {@code void}.*/@SuppressWarnings("unchecked")public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void");/** The Void class cannot be instantiated.*/private Void() {}
}

从源码中发现该类是final的,不可继承,并且构造是私有的,也不能 new。

那么该类有什么作用呢?

下面是我们先查看下 java.lang.Integer 类的源码

我们都知道 int 的包装类是 java.lang.Integer

从这可以看出 java.lang.Integer 是 int 的包装类。

同理,通过如下 java.lang.Void 的源码可以看出 java.lang.Void 是 void 关键字的包装类。

public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void");

Void 使用

Void类是一个不可实例化的占位符类,如果方法返回值是Void类型,那么该方法只能返回null类型。
示例如下:

public Void test() { return null;
}

使用场景一:

Future<Void> f = pool.submit(new Callable() {@Overridepublic Void call() throws Exception {......return null;}});

比如使用 Callable接口,该接口必须返回一个值,但实际执行后没有需要返回的数据。 这时可以使用Void类型作为返回类型。

使用场景二:

通过反射获取所有返回值为void的方法。

public class Test {public void hello() { }public static void main(String args[]) {for (Method method : Test.class.getMethods()) {if (method.getReturnType().equals(Void.TYPE)) {System.out.println(method.getName());}}}
}

执行结果:

main
hello
wait
wait
wait
notify
notifyAll

想了解更多精彩内容请关注我的公众号

本人简书blog地址:http://www.jianshu.com/u/1f0067e24ff8    
点击这里快速进入简书

GIT地址:http://git.oschina.net/brucekankan/
点击这里快速进入GIT

java.lang.Void 解析与使用相关推荐

  1. 面试官:说说Java中java.lang.Void和void有什么作用和区别?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入皮皮专属交流群 来源:http://suo.im/5p28k2 void关 ...

  2. java.lang.Void类

    2019独角兽企业重金招聘Python工程师标准>>> java.lang.Void类是基本类型(primitive type)void的包装类型(wrapped type),fin ...

  3. Java 源码赏析 - java.lang - Void

    被人鄙视了,于是也来读读源码... package java.lang;/*** The Void class is an uninstantiable placeholder class to ho ...

  4. java.lang.Class解析

    java.lang.Class 1.java.lang.Class的概念 当一个类或接口被装入的JVM时便会产生一个与之关联的java.lang.Class对象,java.lang.class类就是用 ...

  5. java.lang 源码剖析_java.lang.Void类源码解析

    在一次源码查看ThreadGroup的时候,看到一段代码,为以下: /* * @throws NullPointerException if the parent argument is {@code ...

  6. java.lang包中的常用类

    java.lang包 java.lang.Boolean类 java.lang.Byte类 java.lang.Character java.lang.Character.Subset类 java.l ...

  7. java里void的意思_void的用法和意义

    本文由好程序员ava培训分享void的用法和意义,void在Java中一般用来表示方法没有返回值.例如: 那么其底层原理到底如何呢?我们来一点点的分析一下. 先来了解一下这个单词的基本含义,根据网络查 ...

  8. 用java下载apk解析包出错_Android 9.0 安装包解析错误 java.lang.SecurityException: Permission Denial解决方案...

    在android 9.0自动下载更新时 遇到 安装包解析错误 错误示例.png 在android 7.0使用的是同一套框架却没有问题? 然后通过adb命令抓取一下异常发现 12-18 19:21:32 ...

  9. 【Bug总结】java.lang.IllegalThreadStateException报错bug的解析

    背景 在执行单元测试的时候,发现同一线程运行多次后,就会报一个线程的错误: Exception in thread "Main Thread" java.lang.IllegalT ...

最新文章

  1. Asp.Net中查询域名的Whois信息
  2. 使用 JQUERY 为文本框增加提示文字
  3. 使用Postman完成接口测试
  4. spring框架学习笔记(八)
  5. 我为什么要学习C++反汇编
  6. asp.net权限控制配置web.config
  7. 南开大学计算机本科论文,南开大学本科毕业论文设计-南开大学教务处主页.DOC...
  8. 【转载】linux进程控制-exec系列 exec系统调用
  9. 看〈走出软件作坊〉浅谈扁平化管理
  10. ES6入门之let、cont
  11. android9.0 从driver到APP(2)--hardware
  12. autosar 与osek 的nm
  13. 使用gitLab clone代码报错:error: RPC failed; curl 56 OpenSSL SSL_read: Connection was reset
  14. 多个考拉海购的商品主图如何一键批量保存
  15. 刚学习阿里云VOD,获取视频播放地址
  16. matlab 根式化简,薛定宇教授大讲堂(卷Ⅳ):MATLAB最优化计算最新章节_薛定宇著_掌阅小说网...
  17. AngularJS之有序列表
  18. 安装服务器的win pe系统教程,u盘pe安装win7系统教程图解
  19. 网络安全ai能力建设_人工智能对网络安全的影响
  20. c语言程序设计培训班南宁,南宁从零开始学习编程

热门文章

  1. 三十四、深入Vue.js语法(中篇)
  2. 二十二、深入Ajax技术(下篇)
  3. 九、给小白看的第二篇Python基础教程
  4. 十七、爬虫实战,多线程抓取大搜网新车的数据
  5. 北京内推 | 地平线视觉算法团队招聘视觉算法实习生
  6. 清华大学刘知远教授新作,图神经网络最佳解锁方式 | 送书福利
  7. 无惧秋招,您的NLP算法工程师魔鬼训练计划请查收
  8. python pip gpl_一文了解Python的pip工具
  9. wps电脑版_使用好这几个功能,让你手机里的wps变身神器。
  10. 二级路由dhcp关闭连不上wifi_酒店网络故障:原来还与DHCP服务器有关