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

blog.csdn.net/wenxuankeji...

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


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

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

示例:

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

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


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

  • Void 是 java.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)
主要用途 方法无返回值 泛型/反射/函数式接口中表示无返回值

相关推荐
行百里er5 小时前
Redis 完结篇——Redis 热点问题在 Spring Boot 项目中实战
redis·后端
高频因子挖掘机6 小时前
只取最近 60 个交易日,却每次拉全历史:量化脚本变慢的原因与改法
后端·github·api
孟健7 小时前
从5000亿Token到83%字节匹配:AI逆向工程与重构的工程闭环实践
后端·架构·ai编程
码事漫谈8 小时前
丢得静悄悄,谈一谈 Agent 的记忆是怎么没的
后端
迪飞特科技8 小时前
智慧物业平台实战:Spring Boot 整合小程序实现报修巡检费用全流程
spring boot·后端·小程序
考虑考虑8 小时前
@JsonInclude注解使用
spring boot·后端·spring
IT_陈寒8 小时前
Vite的这个问题坑了我三天,原来如此解决!
前端·人工智能·后端
网易云信8 小时前
大模型能上岗做销售吗?我们让 12 款国产模型交了 420 份作业
前端·后端
CCblandy8 小时前
HTTP 长连接 3 类故障实测:[WinError 10053]、99 个 TIME_WAIT、69 次多余握手,4 种对策怎么选
后端·python·网络协议·http·云原生·性能优化·架构
蜗牛互联网9 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python