在一次源码查看ThreadGroup的时候,看到一段代码,为以下:
1
2
3
4
5
6
7
8
9
|
/* * @throws NullPointerException if the parent argument is {@code null} * @throws SecurityException if the current thread cannot create a * thread in the specified thread group. */ private static Void checkParentAccess(ThreadGroup parent) { parent.checkAccess(); return null ; } |
这个方法用于检查parent访问权限,然后直接返回null,方法的返回类型为Void原以为Void类为void类的包装类,但是查看Void类的
源码后发现并不是如此,Void类的源码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/** * 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() {} } |
在最上面的注释中,描述的是
1
2
|
The { @code Void} class is an uninstantiable placeholder class to hold a * reference to the { @code Class} object representing the Java keyword |
这段话的意思就是Void类是一个不可实例化的占位符类,它持有对标识Java关键字void的Class对象的引用。
并且本身的构造函数为private,并且注明:
1
|
public final class Void {} |
final表明这个类是不允许被其他类继承的。
1
2
3
|
/* * The Void class cannot be instantiated. */ |
即该类是不可以实例化的。
Void类可能本身作用就只是不起任何作用,但是本身只是一个占位符类。即Void类本身只是一个占位符类,不能被实例化,多用于泛型中作占位符使用。
总结
以上就是本文关于java.lang.Void类源码解析的全部内容,希望对大家有所帮助。有什么问题可以随时留言,小编会及时回复大家的。
原文链接:http://blog.csdn.net/u012734441/article/details/51614214