java.lang.Void类源码解析

 更新时间:2017年10月10日 15:31:59   作者:叶长风  
这篇文章主要介绍了java.lang.Void类源码解析的相关内容,对源码中的部分内容进行解释,具有一定参考价值,需要的朋友可以了解下。

 在一次源码查看ThreadGroup的时候,看到一段代码,为以下:

/*
   * @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类的源码如下:

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

在最上面的注释中,描述的是

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,并且注明:

public final class Void {}

final表明这个类是不允许被其他类继承的。

/*
 * The Void class cannot be instantiated.
 */

即该类是不可以实例化的。

Void类可能本身作用就只是不起任何作用,但是本身只是一个占位符类。即Void类本身只是一个占位符类,不能被实例化,多用于泛型中作占位符使用。

总结

以上就是本文关于java.lang.Void类源码解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:RateLimiter 源码分析基于ZooKeeper实现队列源码Spring SpringMVC在启动完成后执行方法源码解析等,有什么问题可以随时留言,小编会及时回复大家的。

相关文章

  • Spring boot如何基于拦截器实现访问权限限制

    Spring boot如何基于拦截器实现访问权限限制

    这篇文章主要介绍了Spring boot如何基于拦截器实现访问权限限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • jar包和war包区别解析

    jar包和war包区别解析

    jar是java普通项目打包,通常是开发时要引用通用类,打成jar包便于存放管理,war是java web项目打包,web网站完成后,打成war包部署到服务器,目的是为了节省资源,提供效率,这篇文章主要介绍了jar包和war包区别及理解,需要的朋友可以参考下
    2023-07-07
  • Mybatis之@MapKey的实现

    Mybatis之@MapKey的实现

    本文介绍了Mybatis中@MapKey注解的使用场景与效果,包含使用@MapKey和不使用@MapKey注解的区别,然后通过源码解析产生各种结果的原因,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • Java单表实现评论回复功能(多种实现方式)

    Java单表实现评论回复功能(多种实现方式)

    这篇文章主要介绍了Java单表实现评论回复功能,大家都知道评论功能有多种实现方式,本文逐一给大家详细讲解,需要的朋友可以参考下
    2023-03-03
  • Spring Boot 文件上传与下载的示例代码

    Spring Boot 文件上传与下载的示例代码

    这篇文章主要介绍了Spring Boot 文件上传与下载的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 数组实现Java 自定义Queue队列及应用操作

    数组实现Java 自定义Queue队列及应用操作

    这篇文章主要介绍了数组实现Java 自定义Queue队列及应用操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Unicode、UTF-8 和 ISO8859-1区别解析

    Unicode、UTF-8 和 ISO8859-1区别解析

    这篇文章主要介绍了Unicode、UTF-8 和 ISO8859-1到底有什么区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 使用maven方式创建springboot项目的方式

    使用maven方式创建springboot项目的方式

    使用Spring Initializr创建spring boot项目,因为外网问题导致很难成功,所以只能使用maven方式,这里介绍下使用maven方式创建springboot项目的方法,感兴趣的朋友一起看看吧
    2022-09-09
  • SpringBoot整合EasyExcel实现批量导入导出

    SpringBoot整合EasyExcel实现批量导入导出

    这篇文章主要为大家详细介绍了SpringBoot整合EasyExcel实现批量导入导出功能的相关知识,文中的示例代码讲解详细,需要的小伙伴可以参考下
    2024-03-03
  • Java的MyBatis框架项目搭建与hellow world示例

    Java的MyBatis框架项目搭建与hellow world示例

    MyBatis框架为Java程序的数据库操作带来了很大的便利,这里我们就从最基础的入手,来看一下Java的MyBatis框架项目搭建与hellow world示例,需要的朋友可以参考下
    2016-06-06

最新评论