别再被null搞崩了!掌握switch的4种安全替代方案

如何理解Apollo模型参考自适应控制MRAC 最近有了解到百度无人驾驶Apollo项目中的横向控制有用到MRAC(Model Reference Adaptive Control),于是便详细研究了一下这个控制方法,在此总结一下心得。 什么是MRAC MRAC控制系统的基本结构图如下所示: 它由两个环路组成,由控制器和受控对象组成内环,这一部分称之为可调系统,由参考模型和自适应机构组成外环。实际上,该系统是在常规的反馈控制回路上再附加一个参考模型和控制器参数的自动调节回路而形成。在该系统中,参考模型的输出或状态相当于给定一个动态性能指标,(通常,参考模 阅读详情

第一章:null 异常的根源与 switch 的局限性

在现代编程语言中,null 值的存在是引发运行时异常的主要源头之一。最常见的 NullPointerException 往往出现在对象未初始化即被调用方法或访问属性的场景中。其根本原因在于类型系统允许引用指向“无值”状态,而开发者容易忽略对此类状态的检查。

为何 null 如此危险

  • 它是一种隐式契约的破坏者,方法返回值或参数可能为 null 却无从得知
  • 编译器通常无法在编译期捕获 null 访问,导致问题延迟至运行时暴露
  • 在复杂调用链中,定位 null 来源需要大量调试成本

switch 对 null 的处理缺陷

Java 等语言中的 switch 语句在面对 null 输入时会直接抛出异常,而非安全跳过或提供默认路径。例如以下代码:

String status = null;
switch (status) { // 此处将抛出 NullPointerException
    case "ACTIVE":
        System.out.println("用户活跃");
        break;
    case "INACTIVE":
        System.out.println("用户不活跃");
        break;
    default:
        System.out.println("状态未知");
}
上述代码在运行时立即崩溃,因为 switch 底层使用了 equals() 或指针比较逻辑,而 null 无法参与这些操作。

规避策略对比

策略说明风险
前置判空在 switch 前使用 if 判断是否为 null增加冗余代码,易遗漏
使用 Optional封装可能为空的值,强制解包需运行时支持,学习成本高
模式匹配(新语言特性)如 Java 17+ 的 switch 模式匹配支持 null 分支依赖高版本 JDK
graph TD A[输入值] --> B{是否为 null?} B -->|是| C[执行默认处理] B -->|否| D[进入 switch 分支匹配] D --> E[执行对应逻辑]

第二章:Optional 类型驱动的安全编程

2.1 理解 Optional 的设计哲学与核心 API

为何需要 Optional
在传统编程中,null 值是空指针异常(NullPointerException)的主要来源。Optional 的设计初衷是通过显式的类型语义,强制开发者处理“值可能不存在”的情况,从而提升代码健壮性。
核心 API 概览
Optional 提供了多个静态工厂方法和实例方法来安全地操作可能为空的值:
  • Optional.of(value):创建包含非 null 值的 Optional
  • Optional.ofNullable(value):可接受 null 的安全构造方式
  • optional.isPresent():判断值是否存在
  • optional.orElse(defaultValue):提供默认备选值
Optional<String> optional = Optional.ofNullable(getString());
String result = optional.orElse("default");
上述代码中,ofNullable 安全封装可能为 null 的返回值,orElse 在值缺失时提供默认字符串,避免了显式 null 判断,使逻辑更清晰、更函数式。

2.2 使用 Optional 替代 null 判断的实践模式

在现代 Java 开发中,Optional<T> 已成为避免空指针异常的标准实践。它通过封装可能为空的值,强制开发者显式处理缺失情况,从而提升代码健壮性。
基础用法示例
public Optional<String> findUserName(int id) {
    User user = userRepository.findById(id);
    return Optional.ofNullable(user).map(User::getName);
}
上述代码中,ofNullable 安全地包装可能为 null 的对象,map 仅在值存在时执行转换,避免了传统嵌套判空。
常用操作对比
操作传统 null 判断Optional 方式
获取默认值name != null ? name : "default"opt.orElse("default")
延迟计算if (name == null) name = loadName()opt.orElseGet(this::loadName)

2.3 在 switch 表达式中集成 Optional 的技巧

Java 14 引入了 switch 表达式,结合 Optional 可有效避免空值异常,提升代码安全性。
基础用法:switch 表达式返回 Optional
public Optional<String> getStatusMessage(int code) {
    return switch (code) {
        case 1 -> Optional.of("Success");
        case 0 -> Optional.of("Failed");
        case -1 -> Optional.empty();
        default -> Optional.of("Unknown");
    };
}
该方法确保无论分支如何,返回值始终为 Optional 实例。当 code 为 -1 时,显式返回空 Optional,调用方可统一处理缺失情况。
链式调用与默认值处理
  • 使用 orElse() 提供默认消息
  • 通过 map() 转换内部值,避免额外判空
  • 结合 filter() 精确控制输出条件

2.4 避免链式调用中的空指针陷阱

在面向对象编程中,链式调用提升了代码的可读性和简洁性,但当对象引用为 null 时,极易触发空指针异常。
常见问题场景
以下代码在 user 或其嵌套属性为 null 时会抛出 NullPointerException:
String email = user.getAddress().getPostalCode().getEmail();
该语句未对中间对象进行非空校验,一旦任意环节为空,程序将崩溃。
防御性编程策略
采用显式判空或使用 Optional 可有效规避风险:
String email = Optional.ofNullable(user)
    .map(User::getAddress)
    .map(Address::getPostalCode)
    .map(PostalCode::getEmail)
    .orElse("default@example.com");
逻辑分析:map 操作仅在值存在时执行,避免空指针;orElse 提供默认值,增强健壮性。
  • 优先使用 Optional 替代深层嵌套调用
  • 工具类如 Objects.requireNonNull 可用于参数校验

2.5 实战:重构传统 switch 分支中的 null 检查

在传统的 switch-case 结构中,常伴随对输入参数的 null 值检查,导致逻辑分散且可读性差。通过引入策略模式与函数式接口,可有效消除冗余判断。
问题代码示例

switch (type) {
    case "A":
        if (data != null) processA(data);
        break;
    case "B":
        if (data != null) processB(data);
        break;
    default:
        throw new IllegalArgumentException();
}
上述代码在每个分支重复 null 检查,违反 DRY 原则。
重构方案
使用 Map 与函数式接口统一管理处理器:

Map> handlers = Map.of(
    "A", this::processA,
    "B", this::processB
);

public void handle(String type, Data data) {
    Optional.ofNullable(data)
            .map(d -> handlers.getOrDefault(type, t -> {}))
            .ifPresent(h -> h.accept(data));
}
利用 Optional 提前拦截 null 输入,将控制流与业务逻辑解耦,提升扩展性与测试性。

第三章:枚举与密封类的类型安全方案

3.1 利用枚举限定分支取值范围

在类型安全要求较高的系统中,使用枚举(Enum)能有效约束变量的合法取值,避免运行时出现非法状态分支。
枚举提升代码可维护性
通过预定义一组命名常量,枚举使条件分支逻辑更清晰。例如,在订单状态处理中:
type OrderStatus int

const (
    Pending OrderStatus = iota
    Processing
    Shipped
    Delivered
    Cancelled
)

func handleOrder(status OrderStatus) {
    switch status {
    case Pending, Processing:
        fmt.Println("订单处理中")
    case Shipped, Delivered:
        fmt.Println("订单已发货")
    case Cancelled:
        fmt.Println("订单已取消")
    default:
        // 编译期即可发现遗漏的枚举值,避免非法状态
        panic("未知订单状态")
    }
}
上述代码中,OrderStatus 枚举限制了状态只能是预设值,编译器可在 switch 分支中检测是否覆盖所有情况,显著降低逻辑错误风险。
优势对比
  • 相比字符串或整型“魔数”,枚举语义明确
  • IDE 支持自动补全与静态检查
  • 便于统一维护和扩展状态集

3.2 密封类确保 exhaustiveness 检查

密封类(Sealed Class)是 Kotlin 中用于限制类继承结构的机制,适用于表示受限的类层次结构。它确保所有子类都必须在编译时已知,从而支持在 `when` 表达式中进行详尽性检查(exhaustiveness check)。
密封类的基本定义
sealed class Result
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
上述代码定义了一个密封类 `Result`,其子类仅限于同一文件中的继承者。编译器能“知晓”所有可能的子类。
在 when 表达式中实现 exhaustiveness
fun handleResult(result: Result) = when (result) {
    is Success -> println("成功: $result.data")
    is Error -> println("失败: $result.message")
}
由于密封类的继承关系封闭,`when` 表达式无需添加 `else` 分支,编译器可验证所有情况已被覆盖,避免遗漏处理分支。
  • 密封类提升了类型安全与代码可维护性
  • 适用于状态类、UI 事件等有限变体场景

3.3 实战:用密封类替代含 null 的多分支逻辑

在处理多状态返回值时,传统方式常依赖 `null` 值判断与多重 `if-else` 分支,易引发空指针异常。密封类(Sealed Class)提供了一种类型安全的替代方案。
定义密封类表示有限子类型
sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result()
    object Empty : Result()
}
该结构强制所有子类在同一文件中定义,确保编译器可穷尽判断类型。
消除 null 判断,简化分支逻辑
  • 使用 when 表达式匹配所有子类,无需额外 null 检查
  • 每个分支对应明确业务状态,提升可读性与可维护性
通过密封类建模业务状态,有效规避了因 null 值导致的运行时错误,同时使控制流更清晰可靠。

第四章:函数式与模式匹配的现代解法

4.1 函数式接口封装可选行为分支

在现代编程中,函数式接口被广泛用于抽象可变的行为逻辑。通过将不同分支行为封装为函数式接口实例,可以在运行时动态决定执行路径,提升代码灵活性。
函数式接口定义与使用
以 Java 为例,`java.util.function.Predicate` 是典型的函数式接口,可用于条件判断分支:

Predicate<String> isEmpty = str -> str == null || str.isEmpty();
Predicate<String> hasLength = isEmpty.negate();

if (hasLength.test("hello")) {
    System.out.println("字符串有效");
}
上述代码中,`Predicate` 封装了“是否为空”的判断逻辑,通过 `.test()` 方法触发分支决策,避免了硬编码 if-else 结构。
  • 函数式接口仅含一个抽象方法,支持 Lambda 表达式赋值;
  • 可作为参数传递,实现行为参数化;
  • 结合默认方法(如 and、or)可组合复杂条件逻辑。

4.2 模式匹配预览特性处理 null 安全

Java 的模式匹配预览特性在提升代码简洁性的同时,也引入了对 null 值的隐式安全处理机制。通过 instanceof 模式匹配,可避免显式强制转换,减少 NullPointerException 风险。
安全的类型匹配示例
if (obj instanceof String s) {
    System.out.println("长度: " + s.length());
}
上述代码中,只有当 obj 为非 null 且是 String 类型时,才会绑定变量 s 并执行块内逻辑。若 obj 为 null,条件直接返回 false,无需额外判空。
null 处理行为对比
写法null 输入行为
传统转型抛出 NullPointerException
模式匹配安全跳过,不绑定变量

4.3 Map 结构实现分支映射去 switch 化

在现代编程中,使用 Map 结构替代传统的 switch 语句已成为一种更灵活、可维护性更高的实践。通过将条件分支映射为键值对,代码结构更加清晰,且易于扩展。
Map 替代 switch 的基本模式
const handlerMap = {
  create: () => console.log("创建操作"),
  update: () => console.log("更新操作"),
  delete: () => console.log("删除操作"),
};

const action = "create";
if (handlerMap[action]) {
  handlerMap[action]();
}
上述代码中,每个操作名作为 key,对应处理函数作为 value。调用时通过动态访问对象属性执行逻辑,避免了多层 switch 判断。
优势分析
  • 新增分支只需添加键值对,符合开闭原则
  • 支持动态注册和运行时修改
  • 便于单元测试与依赖注入

4.4 实战:构建类型安全的路由分发器

在现代后端架构中,类型安全的路由分发器能有效减少运行时错误。通过泛型与装饰器模式结合,可实现编译期校验的路由注册机制。
核心设计思路
利用 TypeScript 的类装饰器和方法装饰器捕获路径元数据,并结合泛型约束确保请求参数与处理器签名一致。

function Route(path: string) {
  return (target: any, propertyKey: string) => {
    Reflect.defineMetadata('path', path, target, propertyKey);
  };
}

class UserController {
  @Route('/users/:id')
  getUser(id: number): User {
    // 处理逻辑
  }
}
上述代码通过装饰器收集路由信息,配合运行时反射机制进行分发。泛型 User 确保返回类型明确,提升 IDE 支持与可维护性。
类型校验流程
请求进入 → 路由匹配 → 参数解析(自动类型转换) → 类型验证(Zod 或 class-validator) → 执行处理器

第五章:从防御编码到零容忍 null 的工程实践

消除空指针的现代类型系统策略
现代编程语言如 Kotlin 和 TypeScript 提供了非空类型(non-nullable types)作为默认行为。在 Kotlin 中,声明变量时若不附加 `?` 修饰符,则该变量不允许为 null:

val name: String = "Alice"        // 非空,编译期保证
val nickname: String? = null       // 可空,需显式处理
println(nickname?.length ?: -1)    // 安全调用与 Elvis 操作符
构建编译期安全的 API 接口
在 Spring Boot 应用中,使用 `@NonNullApi` 注解整个包层级,强制所有方法参数和返回值默认不可为 null:
  • @NonNull:标注字段或参数,要求非空
  • @Nullable:显式允许 null,提醒调用方判空
  • 结合 Checker Framework 实现编译时检查
这使得 null 相关错误在开发阶段暴露,而非运行时崩溃。
数据访问层的空值治理
JPA 在映射数据库记录时易引入 null。通过构造函数注入和 Optional 封装,可避免实体暴露裸字段:

public class User {
    private final String email;

    public User(String email) {
        this.email = Objects.requireNonNull(email, "Email must not be null");
    }

    public Optional getEmail() {
        return Optional.ofNullable(email);
    }
}
前端接口契约的严格校验
TypeScript 配合 Zod 实现运行时校验,确保 API 响应结构无意外 null:
字段类型是否允许 null
idnumber否
namestring否
phonestring是(Optional<string>)
小红书urlscheme和Activity 本文档详细介绍了小红书App的Deeplink跳转规范,涵盖了多个功能模块的跳转协议。主要内容包括:主页各Tab(关注、发现、购买)的跳转方式;不同类型笔记(图文/视频/长笔记)的详情页跳转参数;用户相关页面(主页/绑定/资料/消息等)的跳转协议;搜索功能(输入页/结果页)的跳转方式;以及话题、标签、专辑、H5页面等特殊场景的跳转实现。文档还提供了各跳转协议所需的参数说明,包括参数类型、默认值、是否必填等详细信息,并标注了不同版本和平台的兼容性要求。 阅读详情

相关推荐

详解STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用

本文详细解析了STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用。通过CubeMX配置、代码实现和常见问题解决方案,帮助开发者高效实现多通道数据同步采集,提升工业自动化和嵌入式系统的数据采集效率与精度。

ii567的博客 364

10分钟快速上手NullSafe:零配置防止JSON数据null值崩溃

NullSafe是一款为iOS开发者打造的终极防崩溃工具,它通过为NSNull添加分类方法,让未识别的消息调用返回nil而非抛出异常,彻底解决JSON数据解析时因null值导致的应用崩溃问题。本文将带你快速掌握这个简单却强大的工具,让你的应用更加健壮稳定。 ## 🤔 为什么选择NullSafe? 在iOS开发中,处理JSON数据时最常见的崩溃原因之一就是遇到null值。当你尝试调用`[nul

gitblog_01077的博客 824

OSG三维渲染引擎编程学习之一:“第一章:OSG介绍” 之 “1.1 OSG简介”

第一章:OSG介绍; 1.1 OSG简介。

LuckyHanMo的博客 3223

java switch-case可匹配字符串以及过滤null

看到java的switch支持字符串的时候,还是有点“震惊"的,再看看在这方面摆烂毫无作为的C,C++;你看看人家,在便民这方面做的多好;我只想知道现在转行还来得及吗?这个例子同时测试了for对数组的特殊用法和switc对字符串的支持。然后偶然发现,字符串是null的时候,java会抛出异常的。然后运行,哈这次果然可以了,这样就不用考虑传给switch之前要先判断字符串是否是null的问题啦。这个与java检测字符串是用字符串的equal()方法有关,咱不深究。最近学习java,记录一下。

weixin_38431416的博客 503

acados安装与调试指南:版本兼容性问题

在计算机编程领域,软件工具和库的安装与调试是每个开发者必经的挑战。最近,在安装和使用acados库时,我遇到了一个有趣的问题,这里我将详细分享我的经验和解决方案。

m0_62153576的博客 740

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1650

iOS 用Runtime解决服务器返回NSNull问题

iOS 奇技yin巧–解决服务器返回NSNull问题奇技yin巧 指过于奇巧而无益的技艺与制品. 转载请注明出处 http://blog.youkuaiyun.com/uxyheaven/article/details/46789065系列文章请看http://blog.youkuaiyun.com/uxyheaven/article/category/5800569问题描述众所周知,服务器返回的数据时不时的就不靠谱一下{

晓月的专栏 8710

Win11此电脑怎么放在桌面上?Win11此电脑如何显示在电脑桌面上?

相信用习惯Win10的用户都喜欢电脑电脑桌面上的此电脑,但是很多用户更新完Win11正式版以后,发现桌面只有回收站和Microsoft Edge图标,没有此电脑。那么,Win11此电脑要如何显示呢?下面小编为大家简单介绍一下操作方法!5、桌面图标设置窗口,点击勾选计算机,然后点击确定,桌面就可以显示此电脑图标了。1、桌面空白处,点击右键,在打开的菜单项中,选择显示设置;4、个性化 - 主题,相关设置下,点击桌面图标设置;3、右侧点击主题(安装、创建、管理);2、设置窗口,左侧点击个性化;

shengyin714959的博客 13万+

iOS中json解析出现NSNull的异常闪退处理方法

JSON建构有两种结构:json简单说就是JavaScript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构 1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key 获取属性值,这

Jason_WangYing的博客 4849

【异常】Codybuddy Error Code: 14003 too many requests 限流报错问题排查与解决指南

14003报错本质为服务端限流拦截,并非账号封禁或程序致命故障,90%以上的场景可通过等待冷却+规范使用行为解决。通过本文的排查步骤,可快速恢复工具使用,同时规避后续重复触发该问题。

奶爸的编程之路,也就一周冷个三天 1253

用 sapgenpse 把 SAPCRYPTOLIB 的 SNC 真正配通

摘要: 在SAP系统中配置SNC(Secure Network Communications)时,sapgenpse工具是关键,尤其在旧版本或组件缺乏图形化维护工具时。核心步骤包括安装SAP Cryptographic Library、创建PSE(Personal Security Environment)、生成运行凭据,并确保证书交换顺序正确。常见问题如RFC连接失败或握手错误,往往源于PSE创建或凭据配置不当。需特别注意SECUDIR目录设置、PSE身份管理(单一或独立PSE方案)、以及服务账号凭据的权

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 66

iOS解决json串中的NSNull类型

我的博客原文地址后端返回的数据中总会出现一些NSNull类型,当我们一处理程序就会崩溃,因此想到把返回的数据中的NSNull类型全部转换成@”“空字符串。下面是转化方法:1 自定义的几个方法:放在NSDictionary类别中#pragma mark - 私有方法 //将NSDictionary中的Null类型的项目转化成@""+(NSDictionary *)nullDic:(NSDictiona

一切随缘的博客 2021

直击高频编程考点:字符串知识及经典算法题总结

字符串相关基本练习题总结(最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等)

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

Java中switch如何安全处理null值(null穿透问题全揭秘)

掌握switch的null处理技巧,避免空指针异常。本文详解Java中switch语句的null穿透问题,涵盖JDK版本差异、try-catch防护与预判校验等安全策略,适用于实际开发中的容错场景,提升代码健壮性,值得收藏。

LiteCompile的博客 964

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

switch语句中的null究竟引发什么危机?90%开发者都忽略的细节

掌握switch的null处理技巧,避免程序崩溃与逻辑错误。详解Java等语言中switch语句对null的异常机制及安全规避方法,涵盖常见应用场景与最佳实践,提升代码健壮性,值得收藏

StepLens的博客 928

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Java switch进阶指南】:深入解析null处理陷阱与最佳实践

掌握Java switch的null处理技巧,避免运行时异常。详解switch语句中null值的处理机制,涵盖JDK版本差异、最佳实践与安全编码方案,提升代码健壮性。适用于实际开发中的多分支场景,值得收藏。

GatherTide的博客 789

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java switch null,如何在switch中使用null

Integer i = ...switch (i){case null:doSomething0();break;}In the code above I cant use null in switch case statement. How can I do this differently?I can't use default because then I want to do someth...

weixin_36371053的博客 1462

switch 赋值为 null

有趣的难受 2733

当switch遇到null

当switch遇到null,会报空指针异常。所以,在使用switch前加上非null判断,单独处理或赋值(方便走default)。

Allen_Swfit的博客 6000

switch(null)到底报不报错?深度剖析JVM底层机制与避坑策略

深入解析switch的null处理机制,揭示JVM底层如何应对switch(null)的运行行为。涵盖适用场景、空指针风险规避方法及编译期优化策略,帮助开发者安全使用枚举与字符串switch。掌握这些技巧,有效避免生产环境Bug,值得收藏。

LiteTrans的博客 777

Java switch不能处理null?真相只有一个(99%的人都理解错了)

揭秘Java switch的null处理真相,解决运行时异常难题。通过实际案例解析switch语句对null的限制及安全绕行方法,适用于字符串匹配等场景,提升代码健壮性。掌握正确写法,避免空指针异常,值得收藏。

FuncIsle的博客 1258

java switch null_java - 为什么String switch语句不支持null case?

java - 为什么String switch语句不支持null case?我只是想知道为什么Java 7 if声明不支持switch情况而是抛出NullPointerException? 请参阅下面的注释行(示例摘自if上的Java Tutorials文章):{String month = null;switch (month) {case "january":monthNumber = 1;...

weixin_28877505的博客 1206

JavaScript switch 语句的三大核心陷阱与工程化替代方案

switch 语句是 JavaScript 中基础但极易误用的分支控制结构,其本质是基于全等比较(===)的严格匹配机制,而非类型宽松的 if-else。理解其执行原理——包括 case 的 === 比较规则、break 的执行流终止语义、default 的未命中兜底逻辑——是避免静默失败和穿透错误的关键。在现代前端工程中,裸写 switch 已成为可维护性瓶颈,推荐采用 Map 映射、函数式封装或状态机驱动等数据驱动方案,尤其适用于 React/Vue 等框架中的状态渲染与业务路由场景。

weixin_30613343的博客 300

java switch null_为什么String switch语句不支持null case?

问题我只是想知道为什么Java 7switch语句不支持anullcase而是throwsNullPointerException?请参阅下面的注释行(示例摘自Java Tutorials文章switch):{String month = null;switch (month) {case "january":monthNumber = 1;break;case "february":monthN...

weixin_42110533的博客 1313

switch传入一个null?匹配null字符串、进入default还是NullPointerException,你知道吗?...

废话不多:线上主角代码 String param = null; switch (param) { case "null": System.out.println("匹配null字符串"); break; default: System.out.println("进入default"); } jdk文...

阿里渣渣java研发组-群主 1517

java switch null,为什么String switch语句不支持null case?

I am just wondering why the Java 7 switch statement does not support a null case and instead throws NullPointerException? See the commented line below (example taken from the Java Tutorials article on...

weixin_36480510的博客 250
上一篇: PEM证书解析实战(从入门到精通):工程师必备的5大解析技能与工具推荐
下一篇: 【稀缺资源】:大型项目中模块导入版本控制的7大黄金法则
CodeIsle
博客等级 码龄1年 145粉丝 1966原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值