java.lang.Void 解析与使用
今天在查看源码的时候发现了 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 解析与使用相关推荐
- 面试官:说说Java中java.lang.Void和void有什么作用和区别?
点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入皮皮专属交流群 来源:http://suo.im/5p28k2 void关 ...
- java.lang.Void类
2019独角兽企业重金招聘Python工程师标准>>> java.lang.Void类是基本类型(primitive type)void的包装类型(wrapped type),fin ...
- Java 源码赏析 - java.lang - Void
被人鄙视了,于是也来读读源码... package java.lang;/*** The Void class is an uninstantiable placeholder class to ho ...
- java.lang.Class解析
java.lang.Class 1.java.lang.Class的概念 当一个类或接口被装入的JVM时便会产生一个与之关联的java.lang.Class对象,java.lang.class类就是用 ...
- java.lang 源码剖析_java.lang.Void类源码解析
在一次源码查看ThreadGroup的时候,看到一段代码,为以下: /* * @throws NullPointerException if the parent argument is {@code ...
- java.lang包中的常用类
java.lang包 java.lang.Boolean类 java.lang.Byte类 java.lang.Character java.lang.Character.Subset类 java.l ...
- java里void的意思_void的用法和意义
本文由好程序员ava培训分享void的用法和意义,void在Java中一般用来表示方法没有返回值.例如: 那么其底层原理到底如何呢?我们来一点点的分析一下. 先来了解一下这个单词的基本含义,根据网络查 ...
- 用java下载apk解析包出错_Android 9.0 安装包解析错误 java.lang.SecurityException: Permission Denial解决方案...
在android 9.0自动下载更新时 遇到 安装包解析错误 错误示例.png 在android 7.0使用的是同一套框架却没有问题? 然后通过adb命令抓取一下异常发现 12-18 19:21:32 ...
- 【Bug总结】java.lang.IllegalThreadStateException报错bug的解析
背景 在执行单元测试的时候,发现同一线程运行多次后,就会报一个线程的错误: Exception in thread "Main Thread" java.lang.IllegalT ...
最新文章
- Asp.Net中查询域名的Whois信息
- 使用 JQUERY 为文本框增加提示文字
- 使用Postman完成接口测试
- spring框架学习笔记(八)
- 我为什么要学习C++反汇编
- asp.net权限控制配置web.config
- 南开大学计算机本科论文,南开大学本科毕业论文设计-南开大学教务处主页.DOC...
- 【转载】linux进程控制-exec系列 exec系统调用
- 看〈走出软件作坊〉浅谈扁平化管理
- ES6入门之let、cont
- android9.0 从driver到APP(2)--hardware
- autosar 与osek 的nm
- 使用gitLab clone代码报错:error: RPC failed; curl 56 OpenSSL SSL_read: Connection was reset
- 多个考拉海购的商品主图如何一键批量保存
- 刚学习阿里云VOD,获取视频播放地址
- matlab 根式化简,薛定宇教授大讲堂(卷Ⅳ):MATLAB最优化计算最新章节_薛定宇著_掌阅小说网...
- AngularJS之有序列表
- 安装服务器的win pe系统教程,u盘pe安装win7系统教程图解
- 网络安全ai能力建设_人工智能对网络安全的影响
- c语言程序设计培训班南宁,南宁从零开始学习编程
热门文章
- 三十四、深入Vue.js语法(中篇)
- 二十二、深入Ajax技术(下篇)
- 九、给小白看的第二篇Python基础教程
- 十七、爬虫实战,多线程抓取大搜网新车的数据
- 北京内推 | 地平线视觉算法团队招聘视觉算法实习生
- 清华大学刘知远教授新作,图神经网络最佳解锁方式 | 送书福利
- 无惧秋招,您的NLP算法工程师魔鬼训练计划请查收
- python pip gpl_一文了解Python的pip工具
- wps电脑版_使用好这几个功能,让你手机里的wps变身神器。
- 二级路由dhcp关闭连不上wifi_酒店网络故障:原来还与DHCP服务器有关