0010JDK源码分析之诡异的Void类型

Posted Java框架源码分析

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0010JDK源码分析之诡异的Void类型相关的知识,希望对你有一定的参考价值。

本文将介绍Void类,Void类是void的包装类,持有void的Class对象引用。同时,介绍一个编程的小技巧,用于强化类的不可实例化。

本文大纲:

       一、Void类的介绍

       二、Void类的应用

       三、总结

一、Void类的介绍

Void是一个不可实例化的final类,私有的构造器更是强化了其单例属性,只保存了一个void的Class实例应用TYPE。Void也是原生类型的一种,但是和int、long这些有些不一样,这也是其之所以诡异的原因,很少场合看到Void的出现。补充一点,对于工具类,最好也是类似Void这样声明为final,并且私有构造器,强调该类不可实例化。Void的源码如下:

二、Void类的应用

Void是一个占位符,多用于泛型,但是还有其他用途,比如用于方法的参数,ClassLoader类的构造器就使用了Void作为参数。在这种情况下,更多的是提高代码的可阅读性,第一次看到可能让人迷糊,结合ClassLoader的实例创建场景,其实是合理的。因为ClassLoader是由安全管理器SecurityManager来创建的,所以构造有父级类加载器ClassLoader实例时必须先调用checkCreateClassLoader()方法,在设置父级类加载器(双亲委派机制)。代码如下:

三、总结

揭开了Void的神秘面纱,学习了一个编程技巧(声明类为final,私有构造器强化类的不可实例化),同时,也了解到Void主要起到占位符的作用,在一些方法参数中可以使用,即使场景很少,大多用于泛型。

感谢您的阅读,谢谢!

以上是关于0010JDK源码分析之诡异的Void类型的主要内容,如果未能解决你的问题,请参考以下文章

0007JDK源码分析之揭秘整数常量池实现机制

0001JDK源码分析之java.lang包结构图

jdk源码阅读笔记之java集合框架(基础篇)

JDK1.8源码分析03之idea搭建源码阅读环境

JDK 源码分析之 String 相关

JDK1.8源码分析之HashMap