java.lang.Void类源码解析
在一次源码查看ThreadGroup的时候,看到一段代码,为以下:
/* *@throwsNullPointerExceptioniftheparentargumentis{@codenull} *@throwsSecurityExceptionifthecurrentthreadcannotcreatea *threadinthespecifiedthreadgroup. */ privatestaticVoidcheckParentAccess(ThreadGroupparent){ parent.checkAccess(); returnnull; }
这个方法用于检查parent访问权限,然后直接返回null,方法的返回类型为Void原以为Void类为void类的包装类,但是查看Void类的
源码后发现并不是如此,Void类的源码如下:
/** *The{@codeVoid}classisanuninstantiableplaceholderclasstoholda *referencetothe{@codeClass}objectrepresentingtheJavakeyword *void. * *@authorunascribed *@sinceJDK1.1 */ publicfinal classVoid{ /** *The{@codeClass}objectrepresentingthepseudo-typecorrespondingto *thekeyword{@codevoid}. */ @SuppressWarnings("unchecked") publicstaticfinalClassTYPE=(Class )Class.getPrimitiveClass("void"); /* *TheVoidclasscannotbeinstantiated. */ privateVoid(){} }
在最上面的注释中,描述的是
The{@codeVoid}classisanuninstantiableplaceholderclasstoholda *referencetothe{@codeClass}objectrepresentingtheJavakeyword
这段话的意思就是Void类是一个不可实例化的占位符类,它持有对标识Java关键字void的Class对象的引用。
并且本身的构造函数为private,并且注明:
publicfinalclassVoid{}
final表明这个类是不允许被其他类继承的。
/* *TheVoidclasscannotbeinstantiated. */
即该类是不可以实例化的。
Void类可能本身作用就只是不起任何作用,但是本身只是一个占位符类。即Void类本身只是一个占位符类,不能被实例化,多用于泛型中作占位符使用。
总结
以上就是本文关于java.lang.Void类源码解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:RateLimiter源码分析、基于ZooKeeper实现队列源码、SpringSpringMVC在启动完成后执行方法源码解析等,有什么问题可以随时留言,小编会及时回复大家的。