void 和 Void

来源:互联网 发布:海洋cms模板怎么用 编辑:程序博客网 时间:2024/05/17 22:52

还是全用代码说话比较直观一点。
先来看看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 finalclass 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: voidVoid.class: class java.lang.VoidVoid.TYPE: voidVoid.class is equal to void.class: falseVoid.TYPE is equal to void.class: true

所以,Void.class不是void.class,Void.TYPE才是void.class,也就是对Java关键字void的Class对象的引用。

0 0
原创粉丝点击