您的位置:首页 > 编程语言 > Java开发

void 和 Void

2015-12-09 17:16 543 查看
还是全用代码说话比较直观一点。

先来看看Void类的实现:

/**
* 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}.
*/
public static final Class<Void> TYPE = Class.getPrimitiveClass("void");

/*
* The Void class cannot be instantiated.
*/
private Void() {}
}


把类的注释翻译一下,这个类的作用便一目了然。

* Void是一个不可实例化的占位符类。

* Void持有Java关键字void的Class对象。

下面用代码来看看Void和void的关系。

class VoidAndVoid {
public static void main(String[] args) {
Class<?> voidClass = void.class;
Class<?> voidClazz = Void.class;
Class<?> voidType = Void.TYPE;

System.out.println("void.class: " + voidClass + "\nVoid.class: " + voidClazz
+ "\nVoid.TYPE: " + voidType
+ "\nVoid.class is equal to void.class: " + voidClazz.equals(voidClass)
+ "\nVoid.TYPE is equal to void.class: " + voidType.equals(voidClass));
}
}


最后得到的结果如下:

void.class: void
Void.class: class java.lang.Void
Void.TYPE: void
Void.class is equal to void.class: false
Void.TYPE is equal to void.class: true


所以,Void.class不是void.class,Void.TYPE才是void.class,也就是对Java关键字void的Class对象的引用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Void