美文网首页
Java Void 和 void 的区别

Java Void 和 void 的区别

作者: Little丶Jerry | 来源:发表于2019-01-10 17:55 被阅读0次
问:Java 中 java.lang.Void 和 void 有什么作用和区别?

答:void 关键字表示函数没有返回结果,是 java 中的一个关键字。java.lang.Void 是一种类型,例如给 Void 引用赋值 null 的代码为 Void nil = null;

通过 Void 类的源代码可以看到,Void 类型不可以继承与实例化。

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() {}
}

Void 作为函数的返回结果表示函数返回 null (除了 null 不能返回其它类型)。

 Void function(int a, int b) {
    //do something
    return null;
 }

在泛型出现之前,Void 一般用于反射之中。例如,下面的代码打印返回类型为 void 的方法名。

public class Test {
    public void print(String v) {}

    public static void main(String args[]){
        for(Method method : Test.class.getMethods()) {
            if(method.getReturnType().equals(Void.TYPE)) {
                System.out.println(method.getName());
            }
        }
    }
}

泛型出现后,某些场景下会用到 Void 类型。例如 Future<T> 用来保存结果。Future 的 get() 方法会返回结果 (类型为 T )。

但如果操作并没有返回值呢?这种情况下就可以用 Future<Void> 表示。当调用 get() 后结果计算完毕则返回后将会返回 null。

另外 Void 也用于无值的 Map 中,例如 Map<T,Void> 这样 map 将具 Set<T> 有一样的功能。

因此当你使用泛型时函数并不需要返回结果或某个对象不需要值时候这是可以使用 java.lang.Void 类型表示。

参考:

java.lava.Void 与 void 的比较:
http://stackoverflow.com/questions/10839042/what-is-the-difference-between-java-lang-void-and-void

如何判断函数返回 void:
http://stackoverflow.com/questions/1924253/how-to-determine-by-reflection-if-a-method-returns-void

本文引用自 Java 中 java.lang.Void 和 void 区别相关问题解析

相关文章

  • Java Void 和 void 的区别

    问:Java 中 java.lang.Void 和 void 有什么作用和区别? 答:void 关键字表示函数没有...

  • void和void*

    总结: void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 1...

  • void和void *

    一、void void的意思是“无类型”,相对于void *来说,使用的时候比较简单,一般只在两个地方使用: 当函...

  • void 和 void *

    一...void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。(1)void指...

  • void 和 void*

    void指针是什么? void指针一般被称为通用指针或泛指针,它是C关于“纯粹地址(raw address)”的一...

  • void *(*)(void *)、void *(^)(void

  • 你知道void和Void的区别吗?

    ​ 区别 void 用于无返回值的方法定义。 Void Void是void的包装方法,和其他基础类型的包装方法不同...

  • C语言中的void 和 void * 的区别

    1、void的作用 c语言中,void为“不确定类型”,不可以用void来声明变量。如:void a = 10;如...

  • +(void)load与+(void)initialize区别

      +(void)load对于加入运行期系统中的每个类及分类来说,必定会调用此方法,而且仅调用一次。当包含类或分类...

  • + (void)load和 + (void)initialize

    [图片上传失败...(image-177e0d-1525249176662)] PanPan1127 关注 201...

网友评论

      本文标题:Java Void 和 void 的区别

      本文链接:https://www.haomeiwen.com/subject/nqaarqtx.html