JAVA中 `void` 和 `Void` 的区别

blog.csdn.net/wenxuankeji...

在 Java 中,voidVoid 看起来相似,但它们的用途和本质完全不同。下面是它们的区别:


1. void 是关键字(Primitive Type Keyword)

  • void 是 Java 的一个关键字,用于表示方法不返回任何值
  • 它是一个原始类型(primitive type),不能被实例化。

示例:

java 复制代码
public void doSomething() {
    System.out.println("执行操作");
}

上面的方法 doSomething() 没有返回值,因此使用 void 声明其返回类型。


2. Void 是类(Class in java.lang)

  • Voidjava.lang 包中的一个类,它是对 void 的"包装"类型。
  • Void 类没有实例,唯一的值是 null
  • 主要用于泛型场景中,例如反射、函数式编程等需要使用 Void 来表示无返回值的情况。

示例:

java 复制代码
public Void doSomethingElse() {
    System.out.println("执行另一个操作");
    return null; // 必须返回 null
}

3. 常见使用场景对比

场景 使用 void 使用 Void
普通方法定义 ✅ 推荐 ❌ 不推荐
泛型编程(如 Callable<Void> ❌ 不可用 ✅ 推荐
反射调用方法 ❌ 不适用 ✅ 常用
表示无返回值的任务

示例:使用 Callable<Void>

java 复制代码
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Void> future = executor.submit(new Callable<Void>() {
    @Override
    public Void call() throws Exception {
        System.out.println("任务执行完成");
        return null;
    }
});

4. 总结对比表

特性 void Void
类型 原始类型(primitive) 引用类型(class)
是否可作为返回类型 ✅ 是 ✅ 是(需返回 null)
是否可作为泛型参数 ❌ 否 ✅ 是
是否可实例化 ❌ 否 ❌ 否(只能为 null)
主要用途 方法无返回值 泛型/反射/函数式接口中表示无返回值

相关推荐
计算机毕设小月哥21 小时前
【Hadoop+Spark+python毕设】中风患者数据可视化分析系统、计算机毕业设计、包括数据爬取、Spark、数据分析、数据可视化、Hadoop
后端·python·mysql
q***44151 天前
Spring Security 新版本配置
java·后端·spring
计算机毕设匠心工作室1 天前
【python大数据毕设实战】强迫症特征与影响因素数据分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
o***74171 天前
Springboot中SLF4J详解
java·spring boot·后端
雨中散步撒哈拉1 天前
18、做中学 | 初升高 | 考场一 | 面向过程-家庭收支记账软件
开发语言·后端·golang
韩立学长1 天前
【开题答辩实录分享】以《智慧物业管理系统的设计与实现》为例进行答辩实录分享
java·后端·mysql
d***95621 天前
springboot接入deepseek深度求索 java
java·spring boot·后端
iOS开发上架哦1 天前
Swift中对象实例方法名混淆问题详细解决方法
后端
零日失眠者1 天前
【文件管理系列】003:重复文件查找工具
后端·python
哈哈哈笑什么1 天前
多级缓存框架(Redis + Caffeine)完整指南
redis·后端