java.lang.Void类源码解析

yizhihongxing

Java.lang.Void类源码解析

Java.lang.Void类是Java语言中一种特殊的“虚无”类型,该类型用于表示方法没有返回值的情况。本文将解析该类的源代码实现原理。

Void类的定义

Java.lang.Void类是一个final修饰的类,不能被继承。该类的源代码如下所示:

public final class Void {
    /**
     * The Void type's one and only value.
     */
    public static final Void TYPE = new Void();

    private Void() {}
}

Void类只有一个TYPE属性,它是Void类型的唯一实例。Void类的构造函数被私有化,因此不能被其他类实例化。

Void的使用

主要分为两个方面:

  1. 用于表示方法无返回值

在Java的方法中,void关键字用来声明方法没有返回值。这时编译器会把该方法编译成返回类型为Void的方法。

例如:

java
public void doSomething() {
// do something here
}

编译器会将该方法编译成:

java
public Void doSomething() {
// do something here
return null;
}

该方法返回值为Void类型的唯一实例null。

  1. Void类型数据的使用

由于Void类型只有一个唯一实例null,所以在实际开发中并没有太多用处。通常会用Void类型作为泛型类型参数中的占位符。

例如,在一个JDBC的操作中,当需要执行一个没有返回值的SQL语句时,可以使用PreparedStatement接口的executeUpdate()方法来执行。

```java
public int executeUpdate() throws SQLException {
return this.executeUpdate(false);
}

public boolean execute() throws SQLException {
return this.execute(false);
}

public ResultSet executeQuery() throws SQLException {
return this.executeQuery(false);
}
```

例如:

java
PreparedStatement stmt = conn.prepareStatement("INSERT INTO user (name, age) VALUES (?, ?)");
stmt.setString(1, "张三");
stmt.setInt(2, 18);
stmt.executeUpdate();

在使用stmt.executeUpdate()时,可以看到返回值是int类型,表示受影响的行数。而我们在实际使用中并不需要这个返回值,可以将其忽略。但是该方法无法声明为void类型,因为它需要返回受影响的行数。因此,我们可以使用Void类型作为泛型类型参数,将返回值忽略不计。

java
PreparedStatement stmt = conn.prepareStatement("INSERT INTO user (name, age) VALUES (?, ?)");
stmt.setString(1, "张三");
stmt.setInt(2, 18);
stmt.<Void>executeUpdate();

这样就可以向JDBC发送INSERT SQL语句并忽略返回值。

总结

Java.lang.Void类是Java中一种特殊的“虚无”类型,用于表示方法无返回值的情况。在实际开发中,除了作为void的替换外,Void在泛型参数类型中也发挥了重要作用。请注意,尽管Void类型不是抽象类,但不能实例化除了null之外的任何对象。因此,Void只是一种表示特殊状态的占位符。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java.lang.Void类源码解析 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 基于Jenkins+Maven+Gitea+Nexus搭建CICD环境的方式

    下面是基于Jenkins+Maven+Gitea+Nexus搭建CICD环境的详细攻略: 准备工作 安装Jenkins 安装Maven 安装Gitea 安装Nexus 配置Jenkins 安装必要的插件 首先,启动Jenkins并登录。进入“插件管理”,安装以下插件: Maven Integration plugin Gitea plugin Nexus A…

    Java 2023年5月19日
    00
  • 从零搭建SpringBoot+MyBatisPlus快速开发脚手架

    从零搭建SpringBoot+MyBatisPlus快速开发脚手架 在实际开发中,我们经常需要使用SpringBoot和MyBatisPlus来快速开发应用程序。本文将手把手教你如何从零开始搭建SpringBoot+MyBatisPlus快速开发脚手架,包括创建项目、添加依赖、配置数据源、创建实体类、创建Mapper接口、使用MyBatisPlus的CRUD…

    Java 2023年5月14日
    00
  • Java中字符串String的+和+=及循环操作String原理详解

    Java中字符串String的+和+=及循环操作String原理详解 在Java中,字符串是一种不可变类型,这意味着一旦一个字符串对象被创建,它的值就不能被改变。在本文中,我们将详细讲解Java中字符串的操作及其原理。 Java中字符串的+和+= 在Java中,你可以使用”+”或”+=”运算符来连接两个字符串。这两个运算符的作用相同,即将两个字符串连接为一个…

    Java 2023年5月26日
    00
  • 实例分析Java中public static void main(String args[])是什么意思

    下面我会为您提供详细的攻略: 1.关于主方法 在Java中,main方法是一个程序的入口,是Java程序启动时由JVM调用的第一个方法。Java中有许多类,每个类中都可以定义main方法。当程序启动时,JVM会查找该类中是否有main方法,如果有,JVM会执行main方法。 2.public static void main(String[] args)的含…

    Java 2023年5月26日
    00
  • JAVA 格式化JSON数据并保存到json文件中的实例

    下面是详细讲解“JAVA 格式化JSON数据并保存到json文件中的实例”的攻略。 1. 引入依赖 在JAVA中对JSON格式化的操作一般使用 GSON 库。在项目中需要先引入 GSON 库的依赖。 Maven依赖: <dependency> <groupId>com.google.code.gson</groupId> …

    Java 2023年5月26日
    00
  • java中javaBean与Bean的深入理解

    Java中JavaBean与Bean的深入理解 在Java中,Bean是指一种符合特定规范的Java类,而JavaBean是一种特殊的Bean,通常指符合JavaBean规范的Java类。在本篇文章中,我们将深入探讨JavaBean和Bean之间的不同,并为读者提供一些使用示例。 Bean的定义 在Java中,Bean是指一种符合JavaBeans规范的特殊…

    Java 2023年5月26日
    00
  • 29基于java的在线考试系统设计与实现

    本章节来介绍一个基于java的在线考试系统的实现 系统概要 近年来,随着世界各国需要参加考核的人员与日俱增,单纯依靠传统的人工安排考场和监考人员的纸质化考试逐渐显示出了效率低,易发生冲突的缺陷,这时,在线考试系统便应运而生,此种考试方式以方便快捷高效等优点将越来越适用于如今的各项考试、考核。此外,无纸化在线考试对考试人员和审阅人员均提供了便捷。因此,本文将主…

    Java 2023年5月8日
    00
  • 详解SpringBoot定制@ResponseBody注解返回的Json格式

    接下来我将详细讲解“详解SpringBoot定制@ResponseBody注解返回的Json格式”的完整攻略。本攻略主要包括以下内容: 什么是@ResponseBody注解 @ResponseBody注解返回的默认Json格式 定制@ResponseBody注解返回的Json格式 1. 什么是@ResponseBody注解 @ResponseBody注解是S…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部