news 2026/4/16 13:05:15

使用switch ,Cannot invoke “String.hashCode()“ because “<local5>“ is null

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用switch ,Cannot invoke “String.hashCode()“ because “<local5>“ is null

这个错误是因为在使用switch语句时,传入的参数是null,而switch在内部会调用字符串的hashCode()方法导致的。这里有几种解决方案:

方案1:在 switch 前进行空值检查(推荐)

String str = getString(); // 可能返回 null if (str == null) { // 处理 null 的情况 handleNullCase(); return; } switch (str) { case "value1": // 处理 value1 break; case "value2": // 处理 value2 break; default: // 默认处理 }

方案2:使用 Objects.requireNonNull()

import java.util.Objects; String str = getString(); switch (Objects.requireNonNull(str, "字符串不能为null")) { case "value1": // 处理逻辑 break; // ... }

方案3:使用 switch 表达式(Java 14+)

String result = switch (str) { case null -> "值是null"; case "value1" -> "结果1"; case "value2" -> "结果2"; default -> "默认结果"; };

方案4:使用增强的 switch(Java 17+)

switch (str) { case null -> System.out.println("值为null"); case "value1" -> System.out.println("值1"); case "value2" -> System.out.println("值2"); default -> System.out.println("其他值"); }

方案5:完整示例

public class SwitchExample { public void processString(String input) { if (input == null) { System.out.println("输入为null,使用默认值"); input = "default"; } switch (input) { case "option1": System.out.println("选择了选项1"); break; case "option2": System.out.println("选择了选项2"); break; default: System.out.println("未知选项: " + input); } } // 或者使用 Optional public void processWithOptional(String input) { switch (Optional.ofNullable(input).orElse("default")) { case "option1": System.out.println("选项1"); break; // ... } } }

建议:

  1. Java 14+:使用 switch 表达式,可以直接处理case null

  2. Java 13 及以下:在 switch 前进行空值检查

  3. 始终考虑输入为 null 的情况,避免空指针异常

这样可以确保代码更加健壮,避免运行时异常。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/12 19:28:17

开源大模型趋势分析:YOLOv11+GPU按需计费成新标准

开源大模型趋势分析:YOLOv11GPU按需计费成新标准 近年来,计算机视觉领域的发展持续加速,目标检测作为其中的核心任务之一,正经历着从算法创新到工程落地的全面升级。在这一进程中,YOLO系列模型始终扮演着关键角色。最…

作者头像 李华
网站建设 2026/4/13 11:17:50

开发者必看:PyTorch-2.x预装依赖镜像免配置部署推荐

开发者必看:PyTorch-2.x预装依赖镜像免配置部署推荐 1. 镜像简介:开箱即用的深度学习开发环境 如果你还在为每次搭建 PyTorch 环境而烦恼——手动安装 CUDA、反复调试 cuDNN 版本、处理 pip 源慢、依赖冲突频发,那么这个镜像就是为你准备的…

作者头像 李华
网站建设 2026/4/1 11:02:12

GPEN能否跑在树莓派上?ARM架构移植实验记录

GPEN能否跑在树莓派上?ARM架构移植实验记录 1. 实验背景与目标 最近在研究图像修复和肖像增强技术时,接触到了一个非常实用的开源项目——GPEN(Generative Prior ENhancement)。它基于深度学习模型,能够对人脸照片进…

作者头像 李华
网站建设 2026/4/15 3:16:00

输入‘你是谁’,它回答‘由我开发’——太震撼了

输入‘你是谁’,它回答‘由我开发’——太震撼了 你有没有试过和一个大模型聊天,问它“你是谁”,结果它一本正经地告诉你:“我是阿里云研发的大语言模型”? 听起来很合理,但如果你希望它说“我由CSDN迪菲赫…

作者头像 李华
网站建设 2026/4/16 12:41:56

Z-Image-Edit文本渲染能力测试:中英文排版准确性分析

Z-Image-Edit文本渲染能力测试:中英文排版准确性分析 1. 引言:为什么这次测试值得关注? 你有没有遇到过这种情况:用AI生成一张海报,中文标题歪歪扭扭、字母间距忽大忽小,甚至文字被切了一半?这…

作者头像 李华
网站建设 2026/4/15 14:38:12

PyTorch-2.x镜像部署总结:通用性与稳定性的平衡

PyTorch-2.x镜像部署总结:通用性与稳定性的平衡 在深度学习开发中,一个开箱即用、环境纯净且兼容性强的镜像,往往能大幅降低前期配置成本。本文围绕 PyTorch-2.x-Universal-Dev-v1.0 镜像展开,从部署结构、依赖集成到实际使用体验…

作者头像 李华