今天在查看源码的时候发现了 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. 37张图详解MAC地址、以太网、二层转发、VLAN
  2. java建一个conversion,Scala中的JavaConverters和JavaConversions有什么区别?
  3. 虫趣:BAD POOL CALLER (par1: 0x20)
  4. shell查找符号链接及其指向目标的方法
  5. Python中Dict的查找
  6. NFS部署及优化(一)
  7. 轻量级HTTP服务器Nginx(Nginx性能优化技巧)
  8. C++:数字字符的出现次数
  9. Top 10 Security Issue Solution
  10. Hosts Setup Utility – 在线更新 hosts
  11. 为什么要用非关系型数据库nosql
  12. vs2008打开aspx文件时设计界面死机情况的解决
  13. 编码转换的php小脚本,php编码转换小例子
  14. win10固态硬盘分区 整数_固态硬盘怎么重装win10系统?Win10固态硬盘重装系统教程...
  15. 微信开发者工具公众号网页调试跨域问题的解决
  16. 西电计算机科学与技术排名,2020最新世界学科排名:西电3个学科跻身全球10强,发展势头强劲...
  17. 遇到流氓软件不要慌,一篇文章帮您完全清理
  18. 国内首款众筹刷单破亿的产品诞生,监管缺乏下京东刷单文化盛行
  19. c语言中百分号lf是什么意思,digit_C语言 digit是什么意思
  20. 常见路由器开源系统(固件)简介

热门文章

  1. django 搜索
  2. FedML联邦机器学习框架正式开源,助力算法开发和性能比较
  3. 最新进展概述:澄清式提问辅助理解信息检索中的用户意图
  4. 对比学习(Contrastive Learning)相关进展梳理
  5. 二值神经网络(Binary Neural Networks)最新综述
  6. 2017年度最值得读的AI论文评选 | 大张旗鼓送福利
  7. 基于对偶学习的跨领域图片描述生成
  8. Java第三章 类和对象3.1+3.2
  9. SpringBoot AOP实现接口次数访问统计
  10. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task3:网络模型结构发展