转载

面试官问:Java中java.lang.Void和void有什么区别?

点击上方 蓝色字体 ,选择“设置星标”

优质文章,第一时间送达

面试官问:Java中java.lang.Void和void有什么区别?

作者:FserSuN

来源: https://urlify.cn/UbUNZr

面试官问: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 这样map将具Set<T>有一样的功能。

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

遗漏热文?赶紧标星

面试官问:Java中java.lang.Void和void有什么区别?

1.  阿里社招面试指南

2.  阿里应届生面试指南

3.  探寻线程池是如何工作的

4.  到底线程池应该设置多少合适?

5.  跳槽的必备条件是有一份好的简历

6.  不是所有的 Github 都适合写在简历上

7.  所没有项目经验找工作处处碰壁怎么办

8.  每一个开发人员都应该懂得的 UML 规范

9.  工作环境没机会接触高并发、分布式怎么办?

10.  这算是有史以来讲数据库连接池数最清楚的文章了

11.  你以为认为 count(1) 比 count(*) 效率高么?

12.  用了这么多年 Spring Boot 你知道他爹有多大背景吗?

面试官问:Java中java.lang.Void和void有什么区别?

原文  http://mp.weixin.qq.com/s?__biz=MzIyNzc1ODQ0MQ==&mid=2247484848&idx=2&sn=69c333b5f02fa1b77c70c860d96c0659
正文到此结束
Loading...